#include <bits/stdc++.h>
#define eb emplace_back
#define all(V) (V).begin(),(V).end()
#define fi first
#define se second
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
int n, m, t, a[1005][1005], res[1005][1005];
char s[100005];
struct vec
{
	int x, y, z;
	vec(int x,int y,int z):x(x),y(y),z(z) {}
};
int main()
{
	int i, j;
	scanf("%d", &t);
	while (t--) {
		scanf("%d %d", &n, &m);
		for (i=0; i<n; i++) {
			for (j=0; j<n; j++) {
				scanf("%d", a[i]+j);
				a[i][j]-=1;
			}
		}
		scanf("%s", s);
		vec zr(0,0,0), xv(1,0,0), yv(0,1,0), zv(0,0,1);
		for (i=0; i<m; i++) {
			if (s[i]=='R') zr.y+=1;
			else if (s[i]=='L') zr.y-=1;
			else if (s[i]=='D') zr.x+=1;
			else if (s[i]=='U') zr.x-=1;
			else if (s[i]=='I') {
				swap(zr.y,zr.z);
				swap(xv.y,xv.z);
				swap(yv.y,yv.z);
				swap(zv.y,zv.z);
			}
			else {
				swap(zr.x,zr.z);
				swap(xv.x,xv.z);
				swap(yv.x,yv.z);
				swap(zv.x,zv.z);
			}
		}
		for (i=0; i<n; i++) {
			for (j=0; j<n; j++) {
				int xx=(zr.x+xv.x*i+yv.x*j+zv.x*a[i][j])%n;
				int yy=(zr.y+xv.y*i+yv.y*j+zv.y*a[i][j])%n;
				int zz=(zr.z+xv.z*i+yv.z*j+zv.z*a[i][j])%n;
				if (xx<0) xx+=n;
				if (yy<0) yy+=n;
				if (zz<0) zz+=n;
				res[xx][yy]=zz+1;
			}
		}
		for (i=0; i<n; i++) {
			for (j=0; j<n; j++) printf("%d ", res[i][j]);
			printf("\n");
		}
		printf("\n");
	}
	return 0;
}
