#include <bits/stdc++.h>
using namespace std;
const int N = 100;
bool isVal[N][N];
struct square {
  int x, y, ind;
  friend bool operator<(const square t1, const square t2) {
    return t1.x < t2.x;
  }
};
struct st {
  int x0, y0, x1, y1;
};
vector<square> grid;
vector<square> final;
vector<st> mov1;
vector<st> mov2;
int n, m;
void fixHeight(vector<square> v, vector<st> &mv) {
  memset(isVal, 0, sizeof isVal);
  for (int i = 0; i < m; i++) {
    isVal[v[i].x][v[i].y] = true;
  }
  sort(v.begin(), v.end());
  vector<pair<int, square>> t;
  for (int i = 0; i < v.size(); i++) {
    t.push_back({i + 1, v[i]});
  }
  for (int i = 0; i < t.size(); i++) {
    int cmp = 1;
    if ((t[i].second).x > t[i].first) {
      cmp = -1;
    }
    int f = (t[i].second).x;
    bool check = true;
    while (f != t[i].first) {
      f += cmp;
      if (isVal[f][(t[i].second).y]) {
        check = false;
      }
    }
    if (!check) {
      t.push_back(t[i]);
      continue;
    }
    int j = t[i].first - 1;
    while (v[j].x != t[i].first) {
      st tmp;
      tmp.x0 = v[j].x;
      tmp.y0 = v[j].y;
      isVal[tmp.x0][tmp.y0] = false;
      v[j].x += cmp;
      tmp.x1 = v[j].x;
      tmp.y1 = v[j].y;
      isVal[tmp.x1][tmp.y1] = true;
      mv.push_back(tmp);
    }
  }
  for (int i = 0; i < m; i++) {
    int cmp = 1;
    if (v[i].y > v[i].ind + 1) {
      cmp = -1;
    }
    while (v[i].y != v[i].ind + 1) {
      st tmp;
      tmp.x0 = v[i].x;
      tmp.y0 = v[i].y;
      v[i].y += cmp;
      tmp.x1 = v[i].x;
      tmp.y1 = v[i].y;
      mv.push_back(tmp);
    }
  }
  for (int i = 0; i < m; i++) {
    int cmp = 1;
    if (v[i].x > v[i].ind + 1) {
      cmp = -1;
    }
    while (v[i].x != v[i].ind + 1) {
      st tmp;
      tmp.x0 = v[i].x;
      tmp.y0 = v[i].y;
      v[i].x += cmp;
      tmp.x1 = v[i].x;
      tmp.y1 = v[i].y;
      mv.push_back(tmp);
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    square tmp;
    tmp.x = x;
    tmp.y = y;
    tmp.ind = i;
    grid.push_back(tmp);
  }
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    square tmp;
    tmp.x = x;
    tmp.y = y;
    tmp.ind = i;
    final.push_back(tmp);
  }
  fixHeight(grid, mov1);
  fixHeight(final, mov2);
  cout << mov1.size() + mov2.size() << endl;
  for (int i = 0; i < mov1.size(); i++) {
    cout << mov1[i].x0 << " " << mov1[i].y0 << " " << mov1[i].x1 << " "
         << mov1[i].y1 << endl;
  }
  reverse(mov2.begin(), mov2.end());
  for (int i = 0; i < mov2.size(); i++) {
    cout << mov2[i].x1 << " " << mov2[i].y1 << " " << mov2[i].x0 << " "
         << mov2[i].y0 << endl;
  }
}
