#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
int main() {
int num,n=0,direct,size,row=0,collum=0;
cin >> num >> size >> direct;
for (int i = 0; i < num; i++) {
n += 2;
}
n -= 1;
vector<vector<int>> v(num, vector<int>(n, 0));
int space = num-1,story=1;
for (int i = 0; i < num; i++) {
for (int j = 0; j < n; j++) {
if (j >= space && j <= space + story - 1) {
v[i][j] = 1;
}
else {
v[i][j] = 0;
}
}
space--;
story+=2;
}
int count = 0;
for (int i = 0; i < num; i++) {
for (int j = 0; j < n; j++) {
if (v[i][j] == 1) {
count++;
if (count == direct) {
row = i;
collum = j;
}
}
}
}
for (int i = -(size/2); i < -(size/2)+size; i++) {
for (int j = -(size/2) ; j < -(size/2)+size; j++) {
if (row+i >= 0 && row+i < [Link]() && collum+j >= 0 && collum+j <
v[0].size())
v[row+i][collum+j] = 3;
}
}
for (int j = 0; j < n; j++) {
int one=0;
vector <int> fall;
for (int i = 0; i < num; i++) {
if (v[i][j] == 1) {
one++;
fall.push_back(i);
}
}
for (int i = num-1; i >= 0; i--) {
if (v[i][j] == 3 && one != 0) {
v[i][j] = 1;
v[fall[0]][j] = 0;
one--;
[Link]([Link]());
if (one == 0) {
break;
}
}
}
cout << endl;
}
for (int i = 0; i < num; i++) {
for (int j = 0; j < n; j++) {
if (v[i][j] == 1) {
cout << '#';
}
else {
cout << " ";
}
}
cout << endl;
}
}