#include <bits/stdc++.h>
using namespace std;
int n, m;
struct pos {
  int x, y, num;
};
struct step {
  int x1, y1, x2, y2;
};
bool cmpfirst(const pos &a, const pos &b) { return a.x < b.x; }
vector<step> ans[2];
int const N = 100;
int vis[N][N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int tr = 0; tr < 2; ++tr) {
    memset(vis, 0, sizeof vis);
    vector<pair<pair<int, int>, int>> a(m);
    map<int, pair<int, int>> g;
    for (int i = 0; i < m; ++i) {
      cin >> a[i].first.first >> a[i].first.second;
      --a[i].first.first, --a[i].first.second;
      a[i].second = i;
      vis[a[i].first.first][a[i].first.second] = 1;
    }
    sort(a.begin(), a.end());
    for (int i = 0; i < m; ++i) {
      g[a[i].second] = make_pair(i, a[i].first.second);
    }
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < m; ++j) {
        int &num = a[j].second;
        int &x = a[j].first.first;
        int &y = a[j].first.second;
        int nx = g[num].first;
        if (x == nx) continue;
        int pl = 1;
        if (x > nx) pl = -1;
        int r = x, s = 0;
        while (true) {
          r += pl;
          if (vis[r][y]) s++;
          if (r == nx) break;
        }
        if (s == 0) {
          while (x != nx) {
            vis[x][y] = 0;
            ans[tr].push_back({x, y, x + pl, y});
            x += pl;
            vis[x][y] = 1;
          }
        }
      }
    }
    for (int i = 0; i < m; ++i) {
      g[a[i].second].second = a[i].second;
    }
    for (int i = 0; i < m; ++i) {
      int &x = a[i].first.first;
      int &y = a[i].first.second;
      int num = a[i].second;
      int ny = g[num].second;
      int pl = 1;
      if (y > ny) pl = -1;
      vis[x][y] = 0;
      while (y != ny) {
        vis[x][y] = 0;
        ans[tr].push_back({x, y, x, y + pl});
        y += pl;
      }
      vis[x][y] = 1;
    }
    for (int i = 0; i < m; ++i) {
      g[a[i].second].first = a[i].second;
    }
    for (int i = 0; i < m; ++i) {
      int &x = a[i].first.first;
      int &y = a[i].first.second;
      int num = a[i].second;
      int nx = g[num].first;
      int pl = 1;
      if (x > nx) pl = -1;
      vis[x][y] = 0;
      while (x != nx) {
        ans[tr].push_back({x, y, x + pl, y});
        x += pl;
      }
      vis[x][y] = 1;
    }
  }
  for (auto &i : ans[1]) {
    swap(i.x1, i.x2);
    swap(i.y1, i.y2);
  }
  reverse(ans[1].begin(), ans[1].end());
  cout << ans[1].size() + ans[0].size() << endl;
  for (int i = 0; i < 2; ++i) {
    for (auto j : ans[i]) {
      cout << j.x1 + 1 << ' ' << j.y1 + 1 << ' ' << j.x2 + 1 << ' ' << j.y2 + 1
           << endl;
    }
  }
  return 0;
}
