#include<bits/stdc++.h>
#define int long long
using namespace std;
void testread(){
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
}
int x[200010],y[200010];
char c[200010];
int dir[1010][1010];
int ach[1010][1010];
int n,q;
int f[1010][1010];
inline int dfs(int x,int y){
if(x<1||x>n||y<1||y>n)return 1;
if(ach[x][y]!=-1)return ach[x][y];
if(f[x][y]){
ach[x][y]=0;
return 0;
}
f[x][y]=1;
bool res=0;
if(dir[x][y]==1)res=dfs(x,y-1);//x,y+1
if(dir[x][y]==2)res=dfs(x,y+1);//x,y-1
if(dir[x][y]==3)res=dfs(x-1,y);//x+1,y
if(dir[x][y]==4)res=dfs(x+1,y);//x-1,y
if(dir[x][y]==5)res=(dfs(x-1,y)||dfs(x+1,y))||(dfs(x,y-1)||dfs(x,y+1));
ach[x][y]=res;
f[x][y]=0;
return res;
}
int sum=0;
inline void dfs2(int x,int y){
if(x<1||x>n||y<1||y>n)return;
//cout<<x<<' '<<y<<endl;
if(ach[x][y]==1)return;
ach[x][y]=1;
sum++;
if(dir[x][y+1]==1||dir[x][y+1]==5)dfs2(x,y+1);
if(dir[x][y-1]==2||dir[x][y-1]==5)dfs2(x,y-1);
if(dir[x+1][y]==3||dir[x+1][y]==5)dfs2(x+1,y);
if(dir[x-1][y]==4||dir[x-1][y]==5)dfs2(x-1,y);
return;
}
int ans[500010];
signed main(){
testread();
int t=1;
while(t--){
cin>>n>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dir[i][j]=5;
}
}
for(int i=1;i<=q;i++){
cin>>x[i]>>y[i]>>c[i];
if(c[i]=='L')dir[x[i]][y[i]]=1;
if(c[i]=='R')dir[x[i]][y[i]]=2;
if(c[i]=='U')dir[x[i]][y[i]]=3;
if(c[i]=='D')dir[x[i]][y[i]]=4;
}
memset(ach,-1,sizeof ach);
for(int i=1;i<=n;i++)ach[i][0]=ach[i][n+1]=1;
for(int i=0;i<=n+1;i++)ach[0][i]=ach[n+1][i]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ach[i][j]=dfs(i,j);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(ach[i][j]==1)sum++;
}
}
ans[q]=n*n-sum;
for(int i=q;i>=1;i--){
dir[x[i]][y[i]]=5;
dfs2(x[i],y[i]);
ans[i-1]=n*n-sum;
//cout<<endl;
}
for(int i=1;i<=q;i++)cout<<ans[i]<<'\n';
}
return 0;
}
1~7点,10点通过,其他全都WA了