#include using namespace std; int main() { int T, N, M; scanf("%d %d %d", &T, &M, &N); int field[M][N]; int wolf[M][N]; int sheep[M][N]; int wolfx[M][N]; int sheepx[M][N]; for (int i = 0; i < M; i++) { char row[100]; scanf("%s", row); for (int j = 0; j < N; j++) { field[i][j] = 0; char type = row[j]; if (type == 'S') { sheep[i][j] = 0; wolf[i][j] = -1; } else if (type == 'W') { wolf[i][j] = 0; sheep[i][j] = -1; } else { sheep[i][j] = -1; wolf[i][j] = -1; } } } for (int t = 1; t <= T; t++) { for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) { sheepx[i][j] = sheep[i][j]; wolfx[i][j] = wolf[i][j]; } //sheep for (int i = 0; i < M; i++) { int row = (i == M - 1 ? 0 : i + 1); for (int j = 0; j < N; j++) { sheepx[row][j] = (sheep[i][j] >= 0 ? sheep[i][j] : -1); } } //wolf for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { int col = (j == N - 1 ? 0 : j + 1); wolfx[i][col] = (wolf[i][j] >= 0 ? wolf[i][j] : -1); } } // soil for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { bool hasSheep = (sheepx[i][j] >= 0); bool hasWolf = (wolfx[i][j] >= 0); bool hasGrass = (field[i][j] == 3); bool ateSheep = false; if (hasSheep && hasWolf) { sheepx[i][j] = -1; wolfx[i][j] = 0; field[i][j] = -1; ateSheep = true; } else if (hasSheep && hasGrass && !ateSheep) { sheepx[i][j] = 0; field[i][j] = 0; } if (hasSheep && !hasGrass && !ateSheep) { sheepx[i][j] += 1; if (sheepx[i][j] == 5) { sheepx[i][j] = -1; field[i][j] = -1; } } if (!ateSheep && hasWolf) { wolfx[i][j] += 1; if (wolfx[i][j] == 10) { wolfx[i][j] = -1; field[i][j] = -1; } } if (field[i][j] >= 0 && field[i][j] < 3) field[i][j] += 1; } } for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) { sheep[i][j] = sheepx[i][j]; wolf[i][j] = wolfx[i][j]; } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (wolf[i][j] >= 0) printf("W"); else if (sheep[i][j] >= 0) printf("S"); else if (field[i][j] == -1) printf("*"); else if (field[i][j] == 3) printf("#"); else printf("."); } printf("\n"); } return 0; }