#include <bits/stdc++.h>
typedef struct __pos {
  int r, c, s;
} Pos;
Pos pos[10000];
char org[101][102], fin[101][102];
int n, m, cnt;
void show_fin() {
  int i;
  for (i = 1; i <= n; i++) puts(&fin[i][1]);
  printf("\n");
}
void show_org() {
  int i;
  for (i = 1; i <= n; i++) puts(&org[i][1]);
  printf("\n");
}
int chk(int r, int c, int s) {
  int i;
  if (r < 1 || r > n || c < 1 || c > m) return 0;
  if (r - s < 1 || r + s > n || c - s < 1 || c + s > m) return 0;
  if (org[r][c] != '*') return 0;
  for (i = 1; i <= s; i++) {
    if (org[r - i][c] != '*') return 0;
    if (org[r + i][c] != '*') return 0;
    if (org[r][c + i] != '*') return 0;
    if (org[r][c - i] != '*') return 0;
  }
  fin[r][c] = '.';
  for (i = 1; i <= s; i++) {
    fin[r - i][c] = '.';
    fin[r + i][c] = '.';
    fin[r][c + i] = '.';
    fin[r][c - i] = '.';
  }
  return 1;
}
void draw(int r, int c, int s) {
  int i;
  if (r < 1 || r > n || c < 1 || c > m) return;
  if (r - s < 1 || r + s > n || c - s < 1 || c + s > m) return;
  org[r][c] = '*';
  for (i = 1; i <= s; i++) {
    org[r - i][c] = '*';
    org[r + i][c] = '*';
    org[r][c + i] = '*';
    org[r][c - i] = '*';
  }
}
int main() {
  int i, j, k, nr, nc;
  char ok;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) scanf("%s", &org[i][1]);
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      fin[i][j] = org[i][j];
    }
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      if (fin[i][j] == '*') {
        ok = 0;
        for (k = 1; k <= 49; k++) {
          nr = i, nc = j;
          if (chk(nr, nc, k) == 1) {
            pos[cnt].r = nr, pos[cnt].c = nc, pos[cnt].s = k;
            cnt++;
            ok = 1;
            break;
          }
          nr = i, nc = j + k;
          if (chk(nr, nc, k) == 1) {
            pos[cnt].r = nr, pos[cnt].c = nc, pos[cnt].s = k;
            cnt++;
            ok = 1;
            break;
          }
          nr = i, nc = j - k;
          if (chk(nr, nc, k) == 1) {
            pos[cnt].r = nr, pos[cnt].c = nc, pos[cnt].s = k;
            cnt++;
            ok = 1;
            break;
          }
          nr = i + k, nc = j;
          if (chk(nr, nc, k) == 1) {
            pos[cnt].r = nr, pos[cnt].c = nc, pos[cnt].s = k;
            cnt++;
            ok = 1;
            break;
          }
          nr = i - k, nc = j;
          if (chk(nr, nc, k) == 1) {
            pos[cnt].r = nr, pos[cnt].c = nc, pos[cnt].s = k;
            cnt++;
            ok = 1;
            break;
          }
        }
        if (!ok) {
          printf("-1");
          return 0;
        }
      }
    }
  }
  printf("%d\n", cnt);
  for (i = 0; i < cnt; i++) printf("%d %d %d\n", pos[i].r, pos[i].c, pos[i].s);
  return 0;
}
