#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000 + 9;
const long long MOD = 1e9 + 7;
int a[MAX][MAX], n, m;
int h[4][MAX][MAX];
int l[MAX], r[MAX];
void upd(int x, int y) {
  a[x][y] = 1 - a[x][y];
  int f;
  if (a[x][y] == 1) {
    f = ((x == n - 1) ? 0 : h[0][x + 1][y]);
    for (int i = x; i >= 0 && a[i][y]; i--) h[0][i][y] += 1 + f;
    f = ((x == 0) ? 0 : h[1][x - 1][y]);
    for (int i = x; i < n && a[i][y]; i++) h[1][i][y] += 1 + f;
    f = ((y == m - 1) ? 0 : h[2][x][y + 1]);
    for (int t = y; t >= 0 && a[x][t]; t--) h[2][x][t] += 1 + f;
    f = ((y == 0) ? 0 : h[3][x][y - 1]);
    for (int t = y; t < m && a[x][t]; t++) h[3][x][t] += 1 + f;
  } else {
    h[0][x][y] = h[1][x][y] = h[2][x][y] = h[3][x][y] = 0;
    for (int i = x - 1; i >= 0 && a[i][y]; i--) h[0][i][y] = 1 + h[0][i + 1][y];
    for (int i = x + 1; i < n && a[i][y]; i++) h[1][i][y] = 1 + h[1][i - 1][y];
    for (int t = y - 1; t >= 0 && a[x][t]; t--) h[2][x][t] = 1 + h[2][x][t + 1];
    for (int t = y + 1; t < m && a[x][t]; t++) h[3][x][t] = 1 + h[3][x][t - 1];
  }
}
int cal(int x, int y) {
  int ans = 0;
  stack<int> st;
  for (int t = 0; t < m; t++) {
    while (st.size() && h[0][x][st.top()] >= h[0][x][t]) st.pop();
    if (st.size() == 0)
      l[t] = -1;
    else
      l[t] = st.top();
    st.push(t);
  }
  while (st.size()) st.pop();
  for (int t = m - 1; t >= 0; t--) {
    while (st.size() && h[0][x][st.top()] >= h[0][x][t]) st.pop();
    if (st.size() == 0)
      r[t] = m;
    else
      r[t] = st.top();
    st.push(t);
  }
  for (int t = 0; t < m; t++)
    if (l[t] < y && r[t] > y) ans = max(ans, h[0][x][t] * (r[t] - l[t] - 1));
  while (st.size()) st.pop();
  for (int t = 0; t < m; t++) {
    while (st.size() && h[1][x][st.top()] >= h[1][x][t]) st.pop();
    if (st.size() == 0)
      l[t] = -1;
    else
      l[t] = st.top();
    st.push(t);
  }
  while (st.size()) st.pop();
  for (int t = m - 1; t >= 0; t--) {
    while (st.size() && h[1][x][st.top()] >= h[1][x][t]) st.pop();
    if (st.size() == 0)
      r[t] = m;
    else
      r[t] = st.top();
    st.push(t);
  }
  for (int t = 0; t < m; t++)
    if (l[t] < y && r[t] > y) ans = max(ans, h[1][x][t] * (r[t] - l[t] - 1));
  while (st.size()) st.pop();
  for (int i = 0; i < n; i++) {
    while (st.size() && h[2][st.top()][y] >= h[2][i][y]) st.pop();
    if (st.size() == 0)
      l[i] = -1;
    else
      l[i] = st.top();
    st.push(i);
  }
  while (st.size()) st.pop();
  for (int i = n - 1; i >= 0; i--) {
    while (st.size() && h[2][st.top()][y] >= h[2][i][y]) st.pop();
    if (st.size() == 0)
      r[i] = n;
    else
      r[i] = st.top();
    st.push(i);
  }
  for (int i = 0; i < n; i++)
    if (l[i] < x && r[i] > x) ans = max(ans, h[2][i][y] * (r[i] - l[i] - 1));
  while (st.size()) st.pop();
  for (int i = 0; i < n; i++) {
    while (st.size() && h[3][st.top()][y] >= h[3][i][y]) st.pop();
    if (st.size() == 0)
      l[i] = -1;
    else
      l[i] = st.top();
    st.push(i);
  }
  while (st.size()) st.pop();
  for (int i = n - 1; i >= 0; i--) {
    while (st.size() && h[3][st.top()][y] >= h[3][i][y]) st.pop();
    if (st.size() == 0)
      r[i] = n;
    else
      r[i] = st.top();
    st.push(i);
  }
  for (int i = 0; i < n; i++)
    if (l[i] < x && r[i] > x) ans = max(ans, h[3][i][y] * (r[i] - l[i] - 1));
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int q;
  cin >> n >> m >> q;
  for (int i = 0; i < n; i++)
    for (int t = 0; t < m; t++) cin >> a[i][t];
  for (int i = n - 1; i >= 0; i--) {
    for (int t = 0; t < m; t++) h[0][i][t] = a[i][t];
    if (i != n - 1)
      for (int t = 0; t < m; t++)
        h[0][i][t] = (h[0][i + 1][t] + a[i][t]) * a[i][t];
  }
  for (int i = 0; i < n; i++) {
    for (int t = 0; t < m; t++) h[1][i][t] = a[i][t];
    if (i != 0)
      for (int t = 0; t < m; t++)
        h[1][i][t] = (h[1][i - 1][t] + a[i][t]) * a[i][t];
  }
  for (int t = m - 1; t >= 0; t--) {
    for (int i = 0; i < n; i++) h[2][i][t] = a[i][t];
    if (t != m - 1)
      for (int i = 0; i < n; i++)
        h[2][i][t] = (h[2][i][t + 1] + a[i][t]) * a[i][t];
  }
  for (int t = 0; t < m; t++) {
    for (int i = 0; i < n; i++) h[3][i][t] = a[i][t];
    if (t != 0)
      for (int i = 0; i < n; i++)
        h[3][i][t] = (h[3][i][t - 1] + a[i][t]) * a[i][t];
  }
  for (int i = 0; i < q; i++) {
    int op, x, y;
    cin >> op >> x >> y;
    --x;
    --y;
    if (op == 1)
      upd(x, y);
    else
      cout << cal(x, y) << "\n";
  }
}
