#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50;
bool field[MAXN][MAXN];
struct cub {
  int sr, sc, fr, fc;
  cub() {}
  cub(int sr, int sc, int fr, int fc) : sr(sr), sc(sc), fr(fr), fc(fc) {}
};
bool cmp_r(cub& a, cub& b) { return a.sr < b.sr; }
bool cmp_f(cub& a, cub& b) {
  return (a.fr != b.fr && a.fr < b.fr) || (a.fr == b.fr && a.fc < b.fc);
}
int main() {
  int n, m;
  cin >> n >> m;
  vector<cub> v(m);
  vector<cub> output;
  for (int i = 0; i < m; ++i) {
    cin >> v[i].sr >> v[i].sc;
    v[i].sr--, v[i].sc--;
    field[v[i].sr][v[i].sc] = true;
  }
  for (int i = 0; i < m; ++i) {
    cin >> v[i].fr >> v[i].fc;
    v[i].fr--, v[i].fc--;
  }
  sort(v.begin(), v.end(), cmp_r);
  int move = 1;
  while (move) {
    move = 0;
    for (int i = 0; i < v.size(); ++i)
      if (v[i].sr < i && !field[v[i].sr + 1][v[i].sc]) {
        move++;
        field[v[i].sr + 1][v[i].sc] = true;
        field[v[i].sr][v[i].sc] = false;
        output.push_back(cub(v[i].sr, v[i].sc, v[i].sr + 1, v[i].sc));
        v[i].sr++;
      } else if (v[i].sr > i && !field[v[i].sr - 1][v[i].sc]) {
        move++;
        field[v[i].sr - 1][v[i].sc] = true;
        field[v[i].sr][v[i].sc] = false;
        output.push_back(cub(v[i].sr, v[i].sc, v[i].sr - 1, v[i].sc));
        v[i].sr--;
      }
  }
  for (int i = 0; i < v.size(); ++i)
    while (v[i].sc != i) {
      int val = i - v[i].sc;
      val = val / abs(val);
      output.push_back(cub(v[i].sr, v[i].sc, v[i].sr, v[i].sc + val));
      v[i].sc += val;
    }
  sort(v.begin(), v.end(), cmp_f);
  for (int i = 0; i < v.size(); ++i) {
    while (v[i].sr != i) {
      int val = i - v[i].sr;
      val = val / abs(val);
      output.push_back(cub(v[i].sr, v[i].sc, v[i].sr + val, v[i].sc));
      v[i].sr += val;
    }
  }
  for (int i = 0; i < v.size(); ++i) {
    while (v[i].sc != i) {
      int val = i - v[i].sc;
      val = val / abs(val);
      output.push_back(cub(v[i].sr, v[i].sc, v[i].sr, v[i].sc + val));
      v[i].sc += val;
    }
  }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j) field[i][j] = false;
  for (int i = 0; i < v.size(); ++i) {
    while (v[i].sr != v[i].fr) {
      int val = v[i].fr - v[i].sr;
      val = val / abs(val);
      output.push_back(cub(v[i].sr, v[i].sc, v[i].sr + val, v[i].sc));
      v[i].sr += val;
    }
    field[v[i].sr][v[i].sc] = true;
  }
  move = 1;
  while (move) {
    move = 0;
    for (int i = 0; i < v.size(); ++i) {
      while (v[i].sc != v[i].fc) {
        int val = v[i].fc - v[i].sc;
        val = val / abs(val);
        if (!field[v[i].sr][v[i].sc + val]) {
          output.push_back(cub(v[i].sr, v[i].sc, v[i].sr, v[i].sc + val));
          field[v[i].sr][v[i].sc] = false;
          field[v[i].sr][v[i].sc + val] = true;
          v[i].sc += val;
          move++;
        } else
          break;
      }
    }
  }
  cout << output.size() << endl;
  for (int i = 0; i < output.size(); ++i)
    cout << output[i].sr + 1 << " " << output[i].sc + 1 << " "
         << output[i].fr + 1 << " " << output[i].fc + 1 << '\n';
  return 0;
}
