#include <iostream>#include <string.h>#include <stdio.h>using namespace std;struct node{int n,m;int p[105][105];node(){memset(p,0,sizeof(p));}void input(){scanf("%d%d",&n,&m);int i,j;for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&p[i][j]);}node operator*(node temp){node ans;int i,j,k;for(i=1;i<=n;i++) for(j=1;j<=temp.m;j++) for(k=1;k<=m;k++)ans.p[i][j]+=p[i][k]*temp.p[k][j];ans.n=n;ans.m=temp.m;return ans;}void print(){int i,j;for(i=1;i<=n;i++) {for(j=1;j<m;j++) printf("%d ",p[i][j]);printf("%dn",p[i][j]);}}};node a,b;int C,n;int main(){for(scanf("%d",&C);C--;){scanf("%d",&n);a.input();for(int i=2;i<=n;i++){b.input();a=a*b;}a.print();puts("");}return 0;}


