#include <bits/stdc++.h>
using namespace std;
struct node {
  short int x, y, val;
  bool operator<(const node& p) const {
    if (val == p.val) {
      if (x == p.x) return y < p.y;
      return x < p.x;
    }
    return val < p.val;
  }
};
char str[400][400];
short int val[400][400];
vector<node> vc;
void expand(int v, int w, int n, int m) {
  int l, k, p, q;
  node gr;
  l = v - 1;
  k = v + 1;
  p = w - 1;
  q = w + 1;
  gr.x = v;
  gr.y = w;
  while (l >= 0 && k < n && p >= 0 && q < m) {
    if (str[l][w] == '*' && str[k][w] == '*' && str[v][p] == '*' &&
        str[v][q] == '*') {
      gr.val = v - l;
      vc.push_back(gr);
    }
    l--;
    k++;
    p--;
    q++;
  }
}
int main() {
  int i, j, k, l, m, n, p;
  short int cnt = 0;
  scanf("%d%d%d", &n, &m, &p);
  for (int i = 0; i < n; i++) {
    scanf("%s", str[i]);
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (str[i][j] == '.') continue;
      expand(i, j, n, m);
    }
  }
  sort(vc.begin(), vc.end());
  k = p;
  if (k > vc.size()) {
    printf("-1\n");
    return 0;
  }
  node gr = vc[k - 1];
  l = gr.val;
  gr.x++;
  gr.y++;
  printf("%d %d\n", gr.x, gr.y);
  printf("%d %d\n", gr.x - l, gr.y);
  printf("%d %d\n", gr.x + l, gr.y);
  printf("%d %d\n", gr.x, gr.y - l);
  printf("%d %d\n", gr.x, gr.y + l);
}
