#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T gi() {
  T f = 1, x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  return f * x;
}
const int INF = 0x3f3f3f3f, N = 1003, M = N << 1;
int n;
vector<pair<int, int> > a, b;
bool g[N][N];
inline pair<int, int> rev(int p, int q, bool fl) {
  int x = -1, y = 0;
  for (int i = 0; i < n; i += 1)
    if (g[p][i] && g[i][q]) {
      if (x == -1)
        x = i;
      else {
        y = i;
        break;
      }
    }
  g[p][q] = g[q][p] = false;
  g[x][y] = g[y][x] = true;
  return fl ? make_pair(x, y) : make_pair(p, q);
}
inline vector<pair<int, int> > solve(bool fl) {
  memset(g, 0, sizeof g);
  for (int i = 0; i < n; i += 1) g[i][(i + 1) % n] = g[(i + 1) % n][i] = 1;
  for (int i = 1; i <= n - 3; i += 1) {
    int x = gi<int>() - 1, y = gi<int>() - 1;
    g[x][y] = g[y][x] = 1;
  }
  vector<pair<int, int> > res;
  for (int i = 1; i < n;) {
    if (g[0][i]) {
      ++i;
      continue;
    }
    int j = i + 1;
    while (!g[0][j]) ++j;
    res.push_back(rev(i - 1, j, fl));
  }
  return res;
}
int main() {
  n = gi<int>();
  a = solve(false), b = solve(true);
  printf("%d\n", (int)a.size() + (int)b.size());
  for (int i = 0; i < (int)a.size(); i += 1)
    printf("%d %d\n", a[i].first + 1, a[i].second + 1);
  for (int i = (int)b.size() - 1; i >= 0; i -= 1)
    printf("%d %d\n", b[i].first + 1, b[i].second + 1);
  return 0;
}
