#include <bits/stdc++.h>
using namespace std;
struct op {
  int x, y, a, b;
};
struct mp {
  int s[55][55];
  mp() { memset(s, 0, sizeof(s)); }
};
struct ave {
  int first, second;
  int num;
};
int n, m;
bool cmp(ave a, ave b) { return a.first < b.first; }
vector<ave> v;
vector<op> get(mp p, vector<ave> x) {
  vector<op> ans;
  v.clear();
  v = x;
  sort(v.begin(), v.end(), cmp);
  int ttl = 0;
  for (int i = 0; i < m; i++) ttl += (v[i].first == (i + 1));
  while (ttl < m) {
    for (int i = 0; i < m; i++) {
      if (v[i].first == (i + 1)) continue;
      bool f = 0;
      for (int k = v[i].first + 1; k <= i + 1; k++) {
        if (p.s[k][v[i].second]) {
          f = 1;
          break;
        }
      }
      for (int k = v[i].first - 1; k >= i + 1; k--) {
        if (p.s[k][v[i].second]) {
          f = 1;
          break;
        }
      }
      if (f) continue;
      for (int k = v[i].first + 1; k <= i + 1; k++) {
        ans.push_back((op){k - 1, v[i].second, k, v[i].second});
      }
      for (int k = v[i].first - 1; k >= i + 1; k--) {
        ans.push_back((op){k + 1, v[i].second, k, v[i].second});
      }
      p.s[v[i].first][v[i].second] = 0;
      p.s[i + 1][v[i].second] = 1;
      v[i].first = i + 1;
      ttl++;
      break;
    }
  }
  for (int i = 0; i < m; i++) {
    if (v[i].second > v[i].num) {
      for (int j = v[i].second - 1; j >= v[i].num; j--)
        ans.push_back((op){v[i].first, j + 1, v[i].first, j});
    } else {
      for (int j = v[i].second + 1; j <= v[i].num; j++)
        ans.push_back((op){v[i].first, j - 1, v[i].first, j});
    }
    v[i].second = v[i].num;
  }
  for (int i = 0; i < m; i++) {
    for (int j = v[i].first + 1; j <= v[i].num; j++)
      ans.push_back((op){j - 1, v[i].second, j, v[i].second});
    for (int j = v[i].first - 1; j >= v[i].num; j--)
      ans.push_back((op){j + 1, v[i].second, j, v[i].second});
  }
  return ans;
}
int main() {
  scanf("%d%d", &n, &m);
  mp p, q;
  vector<ave> a, b;
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    p.s[x][y] = 1;
    a.push_back((ave){x, y, i});
  }
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    q.s[x][y] = 1;
    b.push_back((ave){x, y, i});
  }
  vector<op> ans = get(p, a);
  vector<op> ans2 = get(q, b);
  printf("%d\n", ans.size() + ans2.size());
  for (int i = 0; i < ans.size(); i++) {
    printf("%d %d %d %d\n", ans[i].x, ans[i].y, ans[i].a, ans[i].b);
  }
  for (int i = ans2.size() - 1; i >= 0; i--) {
    printf("%d %d %d %d\n", ans2[i].a, ans2[i].b, ans2[i].x, ans2[i].y);
  }
  return 0;
}
