#include <cstdio>
#include <cassert>

const int maxn = 55;

char a[maxn][maxn];
int w, h, k;

int main()
{
  freopen("cafe.in", "r", stdin);
  freopen("cafe.out", "w", stdout);

  assert(scanf("%d%d%d", &h, &w, &k) == 3);
  assert(1 <= h && h <= 50);
  assert(1 <= w && w <= 50);
  assert(1 <= k && k <= 10000);
  for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++)
      a[i][j] = 'T';
  while (k > 0)
  {
    bool found = false;
    for (int i = 0; i < h && !found; i++)
      for (int j = 0; j < w && !found; j++)
        if (a[i][j] == 'T')
        {
          a[i][j] = 'h';
          bool ok = true;
          for (int i1 = i - 1; i1 <= i + 1; i1++)
            for (int j1 = j - 1; j1 <= j + 1; j1++)
            {
              if (i1 < 0 || i1 >= h || j1 < 0 || j1 >= w ||
                a[i1][j1] == 'T')
                continue;
              bool is = false;
              for (int i2 = i1 - 1; i2 <= i1 + 1; i2++)
                for (int j2 = j1 - 1; j2 <= j1 + 1; j2++)
                  if (0 <= i2 && i2 < h && 0 <= j2 && j2 < w &&
                    a[i2][j2] == 'T')
                    is = true;
              if (!is)
                ok = false;
            }
          if (!ok)
            a[i][j] = 'T';
          else
            found = true;
        }
    if (!found)
    {
      puts("Impossible");
      return 0;
    }
    k--;
  }
  for (int i = 0; i < h; i++)
  {
    for (int j = 0; j < w; j++)
      putc(a[i][j], stdout);
    puts("");
  }

  return 0;
}
