#include<cstdio>
int row[9][10],col[9][10],code[3][3][10];
int ap,g[9][9],ok;
struct Node{
int i,j;
}a[100];
void dfs(int k){
if(ok)return;
if(k==ap){
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
printf(j==8?"%d\n":"%d ",g[i][j]);
ok=1;
return ;
}
int x=a[k].i,y=a[k].j;
for(int c=1;c<10;c++)if(!row[x][c]&&!col[y][c]&&!code[x/3][y/3][c]){
row[x][c]=col[y][c]=code[x/3][y/3][c]=1;
g[x][y]=c;
dfs(k+1);
row[x][c]=col[y][c]=code[x/3][y/3][c]=0;
}
}
int main(){
for(int i=0;i<9;i++)
for(int j=0;j<9;j++){
scanf("%d",&g[i][j]);
if(g[i][j]){
row[i][g[i][j]]=1;
col[j][g[i][j]]=1;
code[i/3][j/3][g[i][j]]=1;
}else {
a[ap].i=i;
a[ap].j=j;
++ap;
}
}
dfs(0);
return 0;
}
#include<cstdio>
#include<cstring>
int m,n,cnt;
char g[22][22],vis[22][22];
void dfs(int i,int j){
if(vis[i][j]||g[i][j]=='#'||!g[i][j])return;
vis[i][j]=1;
cnt++;
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int main(){
int x,y;
while(scanf("%d%d",&n,&m)&&m&&n){
cnt=0;
memset(g,'#',sizeof(g));
memset(vis,0,sizeof(vis));
for(int i=1;i<=m;i++){
scanf("%s",g[i]+1);
for(int j=1;j<=n;j++)
if(g[i][j]=='@'){x=i;y=j;}
}
dfs(x,y);
printf("%d\n",cnt);
}
return 0;
}
#include<cstdio>
int a[1000010],t[1000010];
long long cnt;
void meg_sort(int l,int r){
if(l+1==r)return;
int m=l+(r-l)/2,i=l,j=m,ap=l;
meg_sort(l,m);meg_sort(m,r);
while(i<m||j<r){
if(j>=r||(i<m&&a[i]<=a[j]))t[ap++]=a[i++];
else {t[ap++]=a[j++];cnt+=m-i;}
}
for(int i=l;i<r;i++)a[i]=t[i];
}
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",a+i);
meg_sort(0,n);
printf("%lld\n",cnt);
return 0;
}