/*
By WIL
*/
#include <stdio.h>
#include <iostream>
#include <memory.h>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
#include <math.h>
#include <stack>
#include <limits.h>

using namespace std;
#define zero(x) memset(x,0,sizeof(x))
#define mone(x) memset(x,-1,sizeof(x))
#define ll long long
#define base 31
#define mod 10
#define X first
#define Y second
#define fo(i,n) for(int i=0;i<n;i++)
#define foo(i,n) for(int i=1;i<=n;i++)
#define fa(i,I,n) for(int i=I;i<n;i++)
#define sz(x) x.size()
#define pb push_back
#define endl '\n'
int n,m;
struct matInt{
    int t;
    int arr[31][31];
    matInt(int T){
        t=T;
        fo(i,t)fo(j,t)arr[i][j]=0;
    }
    matInt(){
        t=30;
        fo(i,t)fo(j,t)arr[i][j]=0;
    }
}I,O;
matInt operator+(matInt o,matInt p){
    int t=o.t;
    matInt ret=matInt(t);
    fo(i,t)fo(j,t)ret.arr[i][j]=(o.arr[i][j]+p.arr[i][j])%mod;
    return ret;
}
matInt operator*(matInt o,matInt p){
    int t=o.t;
    matInt ret=matInt(t);
    fo(i,t)fo(j,t)fo(k,t){
        ret.arr[i][j]+=(o.arr[i][k]*p.arr[k][j])%mod;
        ret.arr[i][j]%=mod;
    }
    return ret;
}
struct mat{
    int t;
    matInt arr[2][2];
    mat(int T){
        t=T;
        fo(i,t)fo(j,t)arr[i][j]=O;
    }
};
mat operator*(mat o,mat p){
    int t=o.t;
    mat ret=mat(t);
    fo(i,t)fo(j,t)fo(k,t){
        ret.arr[i][j]=ret.arr[i][j]+(o.arr[i][k]*p.arr[k][j]);
    }
    return ret;
}
mat pot(mat a,int b){
    //if(b==0)return I;
    if(b==1)return a;
    mat c=pot(a,b/2);
    c=c*c;
    if(b&1)return c*a;
    return c;
}
int t;
int main(){
    scanf("%d",&t);
    O=matInt(30);
    I=matInt(30);
    fo(i,30)I.arr[i][i]=1;
    int cas=1;
    while(t--){
        //cout<<"S\n";
        scanf("%d%d",&n,&m);
        matInt A=matInt(n);
        fo(i,n)fo(j,n){
            int v;
            scanf("%d",&v);
            A.arr[i][j]=v%mod;
        }
        O.t=I.t=n;
        mat me=mat(2);
        me.arr[0][0]=I;
        me.arr[0][1]=I;
        me.arr[1][0]=O;
        me.arr[1][1]=A;
        me=pot(me,m);
        //fo(i,n){fo(j,n)cout<< me.arr[0][1].arr[i][j] <<" ";cout<<endl;}
        matInt sol=(A*me.arr[0][1]);
        printf("Case %d:\n",cas++);
        fo(i,n){fo(j,n)printf("%d",sol.arr[i][j]);printf("\n");}
    }
    return 0;
}
