#include <bits/stdc++.h>
using namespace std;
char cubes[50][50];
int n;
vector<pair<pair<int, int>, pair<int, int>>> res{};
void left(int y, int x) {
  if (cubes[y][x - 1] != 0 || cubes[y][x] == 0) return;
  cubes[y][x - 1] = cubes[y][x];
  cubes[y][x] = 0;
  res.push_back(make_pair((make_pair((x), (y))), (make_pair((x - 1), (y)))));
}
void right(int y, int x) {
  if (cubes[y][x + 1] != 0 || cubes[y][x] == 0) return;
  cubes[y][x + 1] = cubes[y][x];
  cubes[y][x] = 0;
  res.push_back(make_pair((make_pair((x), (y))), (make_pair((x + 1), (y)))));
}
void up(int y, int x) {
  if (cubes[y - 1][x] != 0 || cubes[y][x] == 0) return;
  cubes[y - 1][x] = cubes[y][x];
  cubes[y][x] = 0;
  res.push_back(make_pair((make_pair((x), (y))), (make_pair((x), (y - 1)))));
}
void down(int y, int x) {
  if (cubes[y + 1][x] != 0 || cubes[y][x] == 0) return;
  cubes[y + 1][x] = cubes[y][x];
  cubes[y][x] = 0;
  res.push_back(make_pair((make_pair((x), (y))), (make_pair((x), (y + 1)))));
}
int main() {
  int m;
  cin >> n >> m;
  for (int i = 0; i < (m); i++) {
    int x, y;
    cin >> y >> x;
    cubes[y - 1][x - 1] = i + 1;
  }
  vector<int> width(n + 1);
  vector<int> height(n + 1);
  for (int i = 0; i < (m); i++) {
    int x, y;
    cin >> y >> x;
    width[i + 1] = x - 1;
    height[i + 1] = y - 1;
  }
  int currHeight = 0;
  for (int j = 0; j < n; j++) {
    for (int i = n - 1; i >= 0; i--) {
      if (cubes[i][j] != 0) {
        for (int k = 0; k < n - 1 - i; k++) {
          down(i + k, j);
        }
      }
    }
  }
  for (int j = 0; j < n; j++) {
    for (int i = 0; i < n; i++) {
      if (cubes[i][j] != 0) {
        for (int k = currHeight; k < i; k++) {
          up(i - (k - currHeight), j);
        }
        currHeight++;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n - 1 - j; k++) {
        right(i, j + k);
      }
    }
  }
  for (int i = 1; i < m; i++) {
    left(i, n - 1);
    int j = i - 1;
    for (; j >= 0; j--) {
      if (height[cubes[i][n - 2]] < height[cubes[j][n - 1]]) {
        down(j, n - 1);
      } else {
        break;
      }
    }
    j++;
    for (int k = 0; k < i - j; k++) {
      up(i - k, n - 2);
    }
    right(j, n - 2);
  }
  for (int i = 0; i < n; i++) {
    int arrivalJ = width[cubes[i][n - 1]];
    for (int k = 0; k < n - 1 - arrivalJ; k++) {
      left(i, n - 1 - k);
    }
  }
  for (int j = 0; j < n; j++) {
    for (int i = n - 1; i >= 0; i--) {
      if (cubes[i][j] != 0) {
        for (int k = 0; k < n - 1 - i; k++) {
          down(i + k, j);
        }
      }
    }
  }
  for (int j = 0; j < n; j++) {
    for (int i = 0; i < n; i++) {
      if (cubes[i][j] != 0) {
        int arrivalH = height[cubes[i][j]];
        for (int k = 0; k < i - arrivalH; k++) {
          up(i - k, j);
        }
      }
    }
  }
  printf("%d\n", res.size());
  for (auto p : res) {
    printf("%d %d %d %d\n", p.first.second + 1, p.first.first + 1,
           p.second.second + 1, p.second.first + 1);
  }
}
