#include <bits/stdc++.h> using namespace std; struct owca { int x,y; int ostatnie_jedzenie; }; struct wilk { int x,y; int ostatnie_jedzenie; }; vector<owca> owce; vector<wilk> wilki; int p[22][22]; int inf=1e9; int n,m,t; void sym() { for(int i=0;i<owce.size();i++) { owce[i].y++; if(owce[i].y==m+1) owce[i].y=1; owce[i].ostatnie_jedzenie++; //cout<<owce[i].y<<endl; } for(int i=0;i<wilki.size();i++) { wilki[i].x++; if(wilki[i].x==n+1) wilki[i].x=1; wilki[i].ostatnie_jedzenie++; } /*for(int i=0;i<owce.size();i++) { int x=owce[i].x; int y=owce[i].y; if(p[y][x]==3) { owce[i].ostatnie_jedzenie=0; p[y][x]=0; } }*/ vector<pair<int,int> > v; for(int i=0;i<owce.size();i++) { for(int j=0;j<wilki.size();j++) { if(owce[i].x==wilki[j].x && owce[i].y==wilki[j].y) { v.push_back({owce[i].x,owce[i].y}); wilki[j].ostatnie_jedzenie=0; } } } vector<owca> zostaly; for(int i=0;i<owce.size();i++) { int x=owce[i].x; int y=owce[i].y; bool ok = false; for(int j=0;j<v.size();j++) { if(v[j].first==x && v[j].second==y) ok = true; } if(ok == false) zostaly.push_back(owce[i]); else { p[y][x]=-inf; } } owce=zostaly; vector<wilk> akt; for(int i=0;i<wilki.size();i++) { if(wilki[i].ostatnie_jedzenie<10) { akt.push_back(wilki[i]); } else p[wilki[i].y][wilki[i].x]=-inf; } wilki=akt; zostaly.resize(0); for(int i=0;i<owce.size();i++) { int x=owce[i].x; int y=owce[i].y; if(p[y][x]==3) { owce[i].ostatnie_jedzenie=0; p[y][x]=-1; } if(owce[i].ostatnie_jedzenie<5) zostaly.push_back(owce[i]); else p[y][x]=-inf; } owce=zostaly; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(p[i][j]==-inf) continue; p[i][j]=min(3,p[i][j]+1); } } } int main() { cin>>t>>m>>n; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { char x; cin>>x; if(x=='S') { owca nowa; nowa.x=j; nowa.y=i; nowa.ostatnie_jedzenie=0; owce.push_back(nowa); } else if(x=='W') { wilk nowy; nowy.x=j; nowy.y=i; nowy.ostatnie_jedzenie=0; wilki.push_back(nowy); } p[i][j]=0; } } while(t--) { sym(); //cout<<owce.size()<<endl; } for(int i=0;i<owce.size();i++) { p[owce[i].y][owce[i].x]=4; } for(int i=0;i<wilki.size();i++) { p[wilki[i].y][wilki[i].x]=5; } //cout<<m<<" "<<n<<'\n'; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(p[i][j]==4) cout<<"S"; else if(p[i][j]==5) cout<<"W"; else if(p[i][j]==-inf) cout<<"*"; else if(p[i][j]==3) cout<<"#"; else cout<<"."; } cout<<endl; } return 0; }