#include <bits/stdc++.h>
using namespace std;
char grid[110][110];
int book[110][110];
struct result {
  int row, colume, central;
} a[11000];
int main() {
  int row, colume;
  cin >> row >> colume;
  for (int i = 1; i <= row; i++) {
    for (int j = 1; j <= colume; j++) cin >> grid[i][j];
  }
  int count = 0, flag1 = 0;
  for (int i = 2; i <= row - 1; i++) {
    for (int j = 2; j <= colume - 1; j++) {
      if (grid[i][j] == '*') {
        flag1 = 1;
        int top = 0, bottom = 0, l = 0, r = 0;
        int k1 = i, k2 = i, k3 = j, k4 = j;
        while (grid[i][++k3] == '*') top++;
        while (grid[i][--k4] == '*') bottom++;
        while (grid[++k1][j] == '*') r++;
        while (grid[--k2][j] == '*') l++;
        int p = min(min(top, bottom), min(r, l));
        int t1 = i, t2 = i, t3 = j, t4 = j;
        if (p) {
          book[i][j] = 1;
          int t1 = i, t2 = i, t3 = j, t4 = j;
          while (t3 < j + p) book[i][++t3] = 1;
          while (t4 > j - p) book[i][--t4] = 1;
          while (t2 > i - p) book[--t2][j] = 1;
          while (t1 < i + p) book[++t1][j] = 1;
          count++;
          a[count].row = i;
          a[count].colume = j;
          a[count].central = p;
        }
      }
    }
  }
  bool flag = true;
  for (int i = 1; i <= row; i++) {
    for (int j = 1; j <= colume; j++) {
      if (grid[i][j] == '*') {
        if (book[i][j] == 0) {
          i = row;
          flag = false;
          break;
        }
      }
    }
  }
  if (!flag1)
    cout << 0 << endl;
  else if (count && flag) {
    cout << count << endl;
    for (int i = 1; i <= count; i++)
      cout << a[i].row << ' ' << a[i].colume << ' ' << a[i].central << endl;
  } else
    cout << -1 << endl;
}
