func_code_string: #include <bits/stdc++.h>   using namespace std;   char pic[105][105];   int vis[105][105];   int disx[] = {-1, 1, 0, 0};   int disy[] = {0, 0, -1, 1};   struct node {     int ro, lo, len;     node() {}     node(int rr, int ll, int le) {       ro = rr;       lo = ll;       len = le;     }   };   int main() {     int n, m;     cin >> n >> m;     vector<node> ve;     for (int i = 0; i < n; i++) cin >> pic[i];     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         if (pic[i][j] ==  * ) {           int tot = 105, cnt;           for (int k = 0; k < 4; k++) {             cnt = 0;             for (int h = 1; h <= n; h++) {               int xx = i + disx[k] * h;               int yy = j + disy[k] * h;               if (xx >= 0 && xx < n && yy >= 0 && yy < m && pic[xx][yy] ==  * ) {                 cnt++;               } else                 break;             }             if (cnt != 0)               tot = min(tot, cnt);             else {               tot = 105;               break;             }           }           if (tot != 105) {             for (int k = 0; k < 4; k++) {               for (int h = 1; h <= tot; h++) {                 int xx = i + disx[k] * h;                 int yy = j + disy[k] * h;                 if (xx >= 0 && xx < n && yy >= 0 && yy < m && pic[xx][yy] ==  * )                   vis[xx][yy]++;               }             }             vis[i][j]++;             ve.push_back(node(i + 1, j + 1, tot));           }         }       }     }     bool flag = true;     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         if (pic[i][j] ==  * ) {           if (vis[i][j] == 0) {             flag = false;             break;           }         }       }       if (!flag) break;     }     if (!flag)       cout << -1 << endl;     else {       cout << ve.size() << endl;       for (int i = 0; i < ve.size(); i++) {         cout << ve[i].ro <<     << ve[i].lo <<     << ve[i].len << endl;       }     }     return 0;   }   