#include <bits/stdc++.h>
using namespace std;
int n, m;
char a[109][109], b[109][109];
vector<pair<pair<int, int>, int>> v;
void go(int x, int y) {
  if (a[x][y] == '.') return;
  int re = -1;
  for (int i = x; i <= n; i++) {
    if (a[i][y] == '.') break;
    re++;
  }
  int mn = re;
  re = -1;
  for (int i = x; i > 0; i--) {
    if (a[i][y] == '.') break;
    re++;
  }
  mn = min(mn, re);
  re = -1;
  for (int i = y; i <= m; i++) {
    if (a[x][i] == '.') break;
    re++;
  }
  mn = min(mn, re);
  re = -1;
  for (int i = y; i > 0; i--) {
    if (a[x][i] == '.') break;
    re++;
  }
  mn = min(mn, re);
  if (mn <= 0) return;
  v.push_back({{x, y}, mn});
  b[x][y] = '*';
  for (int i = 1; i <= mn; i++) {
    b[x][i + y] = '*';
    b[i + x][y] = '*';
    b[x][y - i] = '*';
    b[x - i][y] = '*';
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j < m + 1; j++) {
      cin >> a[i][j];
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j < m + 1; j++) {
      go(i, j);
    }
  }
  for (int i = 1; i < n + 1; i++) {
    for (int j = 1; j < m + 1; j++) {
      if (b[i][j] != '*') b[i][j] = '.';
      if (a[i][j] != b[i][j]) {
        cout << -1;
        return 0;
      }
    }
  }
  cout << v.size() << endl;
  for (auto it : v)
    cout << it.first.first << " " << it.first.second << " " << it.second
         << endl;
}
