func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1000000007;   const int N = 1e6 + 5;   const int inf = 1 << 30;   const long long llf = 9e18;   long long powmod(long long a, long long b) {     long long res = 1;     a %= mod;     assert(b >= 0);     for (; b; b >>= 1) {       if (b & 1) res = res * a % mod;       a = a * a % mod;     }     return res;   }   long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }   struct node {     int x, y, time;     friend bool operator<(const node &a, const node &b) {       return a.time > b.time;     }   };   bool cmp(int x, int y) { return x < y; }   int pic[1010][1010];   int book[1010][1010];   int dx[4] = {0, 0, 1, -1};   int dy[4] = {1, -1, 0, 0};   int n, m, t;   bool check(int x, int y) {     bool f1 = false;     bool f2 = false;     for (register int i = 0; i <= 3; ++i) {       if (x + dx[i] < 0 || x + dx[i] > n - 1 || y + dy[i] < 0 ||           y + dy[i] > m - 1)         continue;       if (pic[x + dx[i]][y + dy[i]] != pic[x][y]) {         f2 = true;       } else {         f1 = true;         book[x][y] = 0;       }     }     if (f1 && !f2) return false;     if (f1 && f2) return true;     if (!f1 && f2) return false;   }   int main() {     cin >> n >> m >> t;     string s;     for (register int i = 0; i <= n - 1; ++i) {       cin >> s;       for (register int j = 0; j <= m - 1; ++j) {         pic[i][j] = s[j] -  0 ;       }     }     node now, re;     priority_queue<node> q;     for (register int i = 0; i <= n - 1; ++i) {       for (register int j = 0; j <= m - 1; ++j) {         book[i][j] = inf;         if (check(i, j)) {           now.x = i;           now.y = j;           now.time = 0;           q.push(now);         }       }     }     while (!q.empty()) {       re = q.top();       q.pop();       int x = re.x, y = re.y;       for (register int i = 0; i <= 3; ++i) {         if (x + dx[i] < 0 || x + dx[i] > n - 1 || y + dy[i] < 0 ||             y + dy[i] > m - 1)           continue;         if (pic[x + dx[i]][y + dy[i]] != pic[x][y]) {           now.x = x + dx[i];           now.y = y + dy[i];           now.time = re.time + 1;           if (book[now.x][now.y] > now.time) {             book[now.x][now.y] = now.time;             q.push(now);           }         }       }     }     long long x, y, p;     for (register int i = 1; i <= t; ++i) {       cin >> x >> y >> p;       x--;       y--;       if (p < book[x][y] || book[x][y] == inf)         cout << pic[x][y] << endl;       else         cout << (pic[x][y] + (p - 1ll * book[x][y]) % 2) % 2 << endl;     }   }   