#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
int n, m, x[N], y[N], x2[N], y2[N];
int all = 0, xx[N], yy[N], x3[N], y3[N];
bool done[N], done2[N];
vector<pair<int, int> > v;
void add(int x, int y, int x2, int y2) {
  xx[all] = x;
  yy[all] = y;
  x3[all] = x2;
  y3[all] = y2;
  all++;
}
void move1(int i, int dy) {
  if (x[i] != 0) {
    add(x[i], y[i], x[i] - 1, y[i]);
    x[i]--;
  }
  while (y[i] > dy) {
    add(x[i], y[i], x[i], y[i] - 1);
    y[i]--;
  }
  while (y[i] < dy) {
    add(x[i], y[i], x[i], y[i] + 1);
    y[i]++;
  }
  if (x[i] != 0) {
    add(x[i], y[i], x[i] - 1, y[i]);
    x[i]--;
  }
}
void move2(int i, int dx, int dy) {
  while (x[i] > dx) {
    add(x[i], y[i], x[i] - 1, y[i]);
    x[i]--;
  }
  while (x[i] < dx) {
    add(x[i], y[i], x[i] + 1, y[i]);
    x[i]++;
  }
  while (y[i] > dy) {
    add(x[i], y[i], x[i], y[i] - 1);
    y[i]--;
  }
  while (y[i] < dy) {
    add(x[i], y[i], x[i], y[i] + 1);
    y[i]++;
  }
}
void move3(int i, int dx, int dy) {
  while (y[i] > dy) {
    add(x[i], y[i], x[i], y[i] - 1);
    y[i]--;
  }
  while (y[i] < dy) {
    add(x[i], y[i], x[i], y[i] + 1);
    y[i]++;
  }
  while (x[i] > dx) {
    add(x[i], y[i], x[i] - 1, y[i]);
    x[i]--;
  }
  while (x[i] < dx) {
    add(x[i], y[i], x[i] + 1, y[i]);
    x[i]++;
  }
}
int X = 3;
int main() {
  scanf("%d%d", &n, &m);
  if (n == 1) {
    puts("0");
    return 0;
  }
  for (int i = 0; i < m; i++) scanf("%d%d", &x[i], &y[i]);
  for (int i = 0; i < m; i++) scanf("%d%d", &x2[i], &y2[i]);
  X = min(X, n);
  int mn = 2000000000, idx = -1;
  for (int i = 0; i < m; i++) {
    if (x[i] == X) {
      done2[y[i]] = true;
      done[i] = true;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (done2[i]) continue;
    mn = 2000000000, idx = -1;
    for (int j = 0; j < m; j++) {
      if (done[j]) continue;
      if (abs(x[j] - X) + abs(y[j] - i) < mn) {
        mn = abs(x[j] - X) + abs(y[j] - i);
        idx = j;
      }
    }
    if (idx == -1) break;
    done[idx] = true;
    done2[i] = true;
    move3(idx, X, i);
  }
  memset(done, 0, sizeof(done));
  memset(done2, 0, sizeof(done2));
  if (n != 2) {
    for (int i = 0; i < n; i++) {
      if (x2[i] == 1) {
        move1(i, y2[i]);
        done[y[i]] = true;
        done2[i] = true;
      }
    }
  }
  X = 1;
  bool F = true;
  for (int i = 1; i <= n; i++) {
    if (done[i]) continue;
    mn = 2000000000, idx = -1;
    for (int j = 0; j < m; j++) {
      if (done2[j]) continue;
      if (y2[j] < mn) {
        mn = y2[j];
        idx = j;
      }
    }
    if (idx == -1) break;
    done2[idx] = true;
    done[i] = true;
    if (n == 2) {
      if (F)
        move2(idx, X, i);
      else
        move3(idx, X, i);
      F = false;
      continue;
    }
    move1(idx, i);
  }
  for (int i = 0; i < m; i++) {
    v.push_back(make_pair(x2[i], i));
  }
  sort(v.begin(), v.end());
  for (int i = (int)v.size() - 1; i >= 0; i--) {
    idx = v[i].second;
    move2(idx, x2[idx], y[idx]);
  }
  for (int i = 2; i <= n; i++) {
    v.clear();
    for (int j = 0; j < m; j++) {
      if (x[j] == i) {
        v.push_back(make_pair(y[j], j));
      }
    }
    sort(v.begin(), v.end());
    for (int j = 0; j < (int)v.size(); j++) {
      idx = v[j].second;
      move2(idx, i, j + 1);
    }
  }
  v.clear();
  for (int i = 0; i < m; i++) {
    v.push_back(make_pair(y2[i], i));
  }
  sort(v.begin(), v.end());
  for (int i = (int)v.size() - 1; i >= 0; i--) {
    idx = v[i].second;
    move2(idx, x2[idx], y2[idx]);
  }
  v.clear();
  printf("%d\n", all);
  for (int i = 0; i < all; i++) {
    printf("%d %d %d %d\n", xx[i], yy[i], x3[i], y3[i]);
  }
  return 0;
}
