#include <bits/stdc++.h>
using namespace std;
template <class T, class L>
bool smax(T& x, L y) {
  return x < y ? (x = y, 1) : 0;
}
template <class T, class L>
bool smin(T& x, L y) {
  return x > y ? (x = y, 1) : 0;
}
const int maxn = 1e2 + 17;
int n, c[maxn], a[maxn][maxn];
pair<int, int> fnd(int x, int y, int v) {
  for (int i = 0; i < n; i++)
    for (int j = 0; j < c[i]; j++)
      if (v == a[i][j] && (x < i || y < j)) return {i, j};
  return {x, y};
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> c[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < c[i]; j++) cin >> a[i][j];
  stringstream ans;
  int res = 0;
  int kcuf = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < c[i]; j++) {
      kcuf++;
      if (a[i][j] == kcuf) continue;
      pair<int, int> go = fnd(i, j, kcuf);
      if (go != pair<int, int>(i, j)) {
        ans << i + 1 << ' ' << j + 1 << ' ' << go.first + 1 << ' '
            << go.second + 1 << '\n';
        res++;
        swap(a[i][j], a[go.first][go.second]);
      }
    }
  cout << res << '\n' << ans.str();
  return 0;
}
