#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;
}