- #include<bits/stdc++.h>
- using namespace std;
- const int N=1e4+10;
- #define int long long
- int n,d;
- int q[N][22],k[22][N],v[N][22],w[N];
- int ans1[N][22],ans2[N][22];
- signed main()
- {
- scanf("%lld %lld",&n,&d);
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=d;j++)
- {
- scanf("%lld",&q[i][j]);
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=d;j++)
- {
- scanf("%lld",&k[j][i]);
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=d;j++)
- {
- scanf("%lld",&v[i][j]);
- }
- }
- for(int i=1;i<=n;i++)
- {
- scanf("%lld",&w[i]);
- }
- for(int i=1;i<=d;i++)
- {
- for(int j=1;j<=d;j++)
- {
- for(int idx=1;idx<=n;idx++)
- {
- ans1[i][j]+=k[i][idx]*v[idx][j];
- }
- }
- }
- // for(int i=1;i<=n;i++)
- // {
- // for(int j=1;j<=n;j++)
- // {
- // printf("%lld ",ans1[i][j]);
- // }
- // printf("\n");
- // }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=d;j++)
- {
- for(int idx=1;idx<=d;idx++)
- {
- ans2[i][j]+=q[i][idx]*ans1[idx][j];
- }
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=d;j++)
- {
- printf("%lld ",w[i]*ans2[i][j]);
- }
- printf("\n");
- }
- }