#include int n,m,total,nxt[4][2]={{0,-1},{-1,0},{1,0},{0,1}}; bool vis[20][20]; char d[20][21]; void dfs(int x,int y,int num) { for(int i=0;i<4;i++) { x+=nxt[i][0]; y+=nxt[i][1]; if(x>=0 && x=0 && y=0 && x=0 && y'0' && !vis[i][j]) { vis[i][j]=1; total=1; dfs(i,j,d[i][j]); if(total>mx) { mx=total; x=i; y=j; } } } } remain-=mx; ans+=mx*(mx-1); tran(x,y,d[x][y]); d[x][y]='0'; for(i=n-1;i>=0;i--) { for(j=0;j=0;k--) { if(d[k][j]>'0') { d[i][j]=d[k][j]; d[k][j]='0'; break; } } } } } t=m-1; while(t--) { for(j=0;j'0') break; if(i==n) { for(i=0;i