#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define int long long
const int N = 505;
int n, k, m;
struct matrix{
int a[N][N];
}ans, base;
matrix operator*(const matrix a, const matrix b)
{
matrix c;
memset(c.a, 0, sizeof (c.a));
for (int i=0; i<=n; ++i){
for (int j=0; j<=n; ++j){
for (int k=0; k<=n; ++k){
c.a[i][j] += a.a[i][k]*b.a[k][j];
}
}
}
return c;
}
inline int read()
{
int x=0, f=1; char c=getchar();
while (!(c>='0' && c<='9')){if (c=='-') f=-1; c=getchar();}
while (c>='0' && c<='9'){x=(x<<3)+(x<<1)+c-48; c=getchar();}
return f*x;
}
signed main()
{
n=read(), k=read(), m=read();
for (int i=0; i<=n; ++i) base.a[i][i] = ans.a[i][i] = 1;
for (int i=0; i<=k; ++i){
char s[3];
int x, y;
scanf("%s", s);
if (s=="G"){
x=read(), y=read();
base.a[n][x-1] += y;
}
else if (s=="B"){
x=read();
for (int j=0; j<=n; ++j) base.a[j][x-1] = 0;
}
else {
x=read(), y=read();
for (int j=0; j<=n; ++j) swap(base.a[j][x-1], base.a[j][y-1]);
}
}
while (k){
if (k&1)
ans = ans*base;
k >>= 1;
base = base*base;
}
for (int i=0; i<n; ++i) printf("%lld ", ans.a[n][i]);
return 0;
}