func_code_string: #include <bits/stdc++.h>   const double eps = 1e-4, pi = acos(-1.0);   const int maxS = 1e3 + 13;   const int maxT = 20;   const long long MOD = 1e9 + 7;   using namespace std;   struct point {     int x, y;   };   struct rs {     int x, y, z;   };   int n, m, i, j, k, x, y, z, S, T, ii, s, t, l, r, pos, len;   int tot = 0, ans = 0, res = 0, kase = 0, cnt = 0;   bool chk[maxS][maxS], flag = true;   string s1, s2;   char ch[maxS][maxS];   vector<rs> v;   point dr[5] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {0, 0}};   bool fk(int x, int y, int len) {     if (x - len < 0 || y - len < 0 || x + len >= n || y + len >= m) return false;     int i;     for (i = x - len; i <= x + len; i++)       if (ch[i][y] ==  . ) return false;     for (i = y - len; i <= y + len; i++)       if (ch[x][i] ==  . ) return false;     for (i = x - len; i <= x + len; i++) chk[i][y] = false;     for (i = y - len; i <= y + len; i++) chk[x][i] = false;     v.push_back({x, y, len});     return true;   }   bool ok(int x, int y) {     int i, j, k, len;     for (k = 0; k < 5; k++) {       for (i = 1; i < max(n, m); i++)         if (fk(x + dr[k].x * i, y + dr[k].y * i, i)) return true;     }     return false;   }   int main() {     ios::sync_with_stdio(false);     cin >> n >> m;     for (i = 0; i < n; i++)       for (j = 0; j < m; j++) {         cin >> ch[i][j];         if (ch[i][j] ==  * ) chk[i][j] = true;       }     for (i = 0; i < n; i++)       for (j = 0; j < m; j++)         if (flag && chk[i][j] && !ok(i, j)) flag = false;     if (!flag)       cout << -1 << endl;     else {       cout << v.size() << endl;       for (auto t : v) cout << t.x + 1 <<     << t.y + 1 <<     << t.z << endl;     }     return 0;   }   