#include <bits/stdc++.h>
using namespace std;
struct lhy {
  int x, y, tox, toy;
} ans[10810], a[10010];
const int dx[4] = {0, 0, 1, -1};
const int dy[4] = {1, -1, 0, 0};
int n, m, anscnt, nowy;
int flag[10010], vis[110][110];
pair<int, int> q[100010], from[110][110];
void getans(int x, int y, int tox, int toy) {
  ans[++anscnt] = (lhy){x, y, tox, toy};
}
void Move(int x, int y) {
  int nowd = 2 * n + 1, nowp = 0;
  for (int i = 1; i <= m; i++)
    if (!flag[i]) {
      if (abs(a[i].x - x) + abs(a[i].y - y) < nowd) {
        nowd = abs(a[i].x - x) + abs(a[i].y - y);
        nowp = i;
      }
    }
  flag[nowp] = 1;
  while (a[nowp].x != x) {
    if (a[nowp].x > x)
      getans(a[nowp].x, a[nowp].y, a[nowp].x - 1, a[nowp].y), a[nowp].x--;
    else
      getans(a[nowp].x, a[nowp].y, a[nowp].x + 1, a[nowp].y), a[nowp].x++;
  }
  while (a[nowp].y != y) {
    if (a[nowp].y > y)
      getans(a[nowp].x, a[nowp].y, a[nowp].x, a[nowp].y - 1), a[nowp].y--;
    else
      getans(a[nowp].x, a[nowp].y, a[nowp].x, a[nowp].y + 1), a[nowp].y++;
  }
}
inline int cmp(const lhy &a, const lhy &b) {
  if (a.toy != b.toy) {
    return abs(a.toy - nowy) > abs(b.toy - nowy);
  }
  return a.tox > b.tox;
}
void bfs(int x, int y, int id) {
  int h = 0, l = 0;
  memset(vis, 0, sizeof(vis));
  q[++l] = make_pair(x, y);
  for (int i = 1; i <= m; i++) vis[a[i].x][a[i].y] = 1;
  while (h < l) {
    ++h;
    int x = q[h].first, y = q[h].second;
    for (int d = 0; d < 4; d++) {
      int vx = x + dx[d], vy = y + dy[d];
      if (vx > 0 && vx <= n && vy > 0 && vy <= n && !vis[vx][vy]) {
        vis[vx][vy] = 1;
        from[vx][vy] = make_pair(x, y);
        q[++l] = make_pair(vx, vy);
      }
    }
  }
  int nowl = anscnt;
  x = a[id].tox, y = a[id].toy;
  while (x != a[id].x || y != a[id].y) {
    int fromx = from[x][y].first, fromy = from[x][y].second;
    getans(from[x][y].first, from[x][y].second, x, y);
    x = fromx, y = fromy;
  }
  reverse(ans + nowl + 1, ans + anscnt + 1);
  a[id].x = a[id].tox, a[id].y = a[id].toy;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) scanf("%d%d", &a[i].x, &a[i].y);
  for (int i = 1; i <= m; i++)
    scanf("%d%d", &a[i].tox, &a[i].toy), flag[a[i].toy] = 1;
  nowy = 1;
  for (int i = 1; i <= n; i++)
    if (!flag[i]) {
      nowy = i;
      break;
    }
  for (int i = 1; i <= m; i++) flag[i] = 0;
  for (int i = 1; i <= m; i++) Move(i, nowy);
  sort(a + 1, a + 1 + m, cmp);
  for (int i = 1; i <= m; i++) bfs(a[i].x, a[i].y, i);
  printf("%d\n", anscnt);
  for (int i = 1; i <= anscnt; i++)
    printf("%d %d %d %d\n", ans[i].x, ans[i].y, ans[i].tox, ans[i].toy);
}
