#include <bits/stdc++.h>
using namespace std;
template <typename tp>
inline void read(tp& x) {
  x = 0;
  char tmp;
  bool key = 0;
  for (tmp = getchar(); !isdigit(tmp); tmp = getchar()) key = (tmp == '-');
  for (; isdigit(tmp); tmp = getchar()) x = (x << 3) + (x << 1) + (tmp ^ '0');
  if (key) x = -x;
}
const int N = 60;
vector<pair<pair<int, int>, pair<int, int> > > ans[2];
vector<int> rec;
int n, m, vis[N], mat[N][N];
void solve(pair<int, int>* p,
           vector<pair<pair<int, int>, pair<int, int> > >& ret) {
  pair<int, int> tmp, nex;
  memset(vis, 0, sizeof vis);
  memset(mat, 0, sizeof mat);
  for (int i = (1); i <= (m); ++i) mat[p[i].first][p[i].second] = i;
  for (int k = (1); k <= (m); ++k) {
    int i = 0;
    for (int j = (1); j <= (m); ++j)
      if (!vis[j])
        if (p[j].first < p[i].first || (!i)) i = j;
    vis[i] = 1;
    mat[p[i].first][p[i].second] = 0;
    while (p[i].first > k) {
      tmp = p[i];
      tmp.first--;
      ret.push_back(pair<pair<int, int>, pair<int, int> >(p[i], tmp));
      p[i] = tmp;
    }
    mat[p[i].first][p[i].second] = i;
    while (p[i].first < k) {
      int j = p[i].first;
      rec.clear();
      while (mat[j][p[i].second]) {
        rec.push_back(mat[j][p[i].second]);
        ++j;
      }
      while (!rec.empty()) {
        nex = tmp = p[rec.back()];
        nex.first++;
        ret.push_back(pair<pair<int, int>, pair<int, int> >(tmp, nex));
        p[rec.back()] = nex;
        mat[nex.first][nex.second] = rec.back();
        rec.pop_back();
      }
      mat[p[i].first - 1][p[i].second] = 0;
    }
  }
  for (int i = (1); i <= (m); ++i) {
    while (p[i].second > i) {
      tmp = p[i];
      --tmp.second;
      ret.push_back(pair<pair<int, int>, pair<int, int> >(p[i], tmp));
      p[i] = tmp;
    }
    while (p[i].second < i) {
      tmp = p[i];
      ++tmp.second;
      ret.push_back(pair<pair<int, int>, pair<int, int> >(p[i], tmp));
      p[i] = tmp;
    }
  }
  for (int i = (1); i <= (m); ++i) {
    while (p[i].first > i) {
      tmp = p[i];
      --tmp.first;
      ret.push_back(pair<pair<int, int>, pair<int, int> >(p[i], tmp));
      p[i] = tmp;
    }
    while (p[i].first < i) {
      tmp = p[i];
      ++tmp.first;
      ret.push_back(pair<pair<int, int>, pair<int, int> >(p[i], tmp));
      p[i] = tmp;
    }
  }
}
pair<int, int> pla[2][N];
int main() {
  read(n), read(m);
  for (int i = (1); i <= (m); ++i)
    read(pla[0][i].first), read(pla[0][i].second);
  for (int i = (1); i <= (m); ++i)
    read(pla[1][i].first), read(pla[1][i].second);
  solve(pla[0], ans[0]);
  solve(pla[1], ans[1]);
  printf("%d\n", (int)ans[0].size() + (int)ans[1].size());
  for (int i = 0; i < (int)ans[0].size(); ++i)
    printf("%d %d %d %d\n", ans[0][i].first.first, ans[0][i].first.second,
           ans[0][i].second.first, ans[0][i].second.second);
  for (int i = (int)ans[1].size() - 1; i >= 0; --i)
    printf("%d %d %d %d\n", ans[1][i].second.first, ans[1][i].second.second,
           ans[1][i].first.first, ans[1][i].first.second);
  return 0;
}
