#include <stdio.h>
int main(){
int i,j,k,t,a,b;
int x,y,z;
int n=0,c;
int count=0;
int map_now[200][200]={0};
int map_next[200][200]={0};
//변수
scanf("%d%d",&a,&b);
scanf("%d%d%d",&x,&y,&z);
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
scanf("%d",&map_now[i][j]);
}
}
scanf("%d",&n);
//입력
for(c=0; c<n; c++){
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
count=0;
for(k=i-1; k<=i+1; k++){
for(t=j-1; t<=j+1; t++){
if(map_now[k][t]==1){
count++;
}
}
}
count -= map_now[i][j];
if(count==x && map_now[i][j]==0){
map_next[i][j]=1;
}
else if((count>=y&&count<z)&& map_now[i][j]==1){
map_next[i][j]=1;
}
else if(map_now[i][j]==1&& count>=z){
map_next[i][j]=0;
}
else{
map_next[i][j]=0;
}
}
}
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
map_now[i][j]=map_next[i][j];
map_next[i][j]=0;
}
}
}
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
printf("%d ",map_now[i][j]);
}
printf("\n");
}
//4 4
//1 2 4
//1 1 1 1
//0 1 0 0
//0 1 0 0
//1 1 0 0
//1
return 0;
#include <stdio.h>
int main()
{
int n,i,j,k,x,y;
int arr[100][100]= {0};
k=1;
//반복문6개, 가운데기준으로 대칭
scanf("%d",&n);
scanf("%d %d",&x, &y);
arr[x][y]=1;
for(i=x; i<=n; i++){
for(j=y-n+1; j<=y+n-1; j++){
arr[i][j]=n+arr[x][y]-j+i-4;
if(j>y){
arr[i][j]=n+arr[x][y]-j+i-2;
}
}
}
for(i=1; i<=n-2; i++){
for(j=1; j<=n; j++){
if(i==x){
continue;
}
arr[i][j]=arr[i+n/2+2][j];
if(i%2==0){
arr[i][j]=arr[i+n/2][j];
}
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
}




