#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, fl = 1;
  char st = getchar();
  while (st < '0' || st > '9') {
    if (st == '-') fl = -1;
    st = getchar();
  }
  while (st >= '0' && st <= '9') x = x * 10 + st - '0', st = getchar();
  return x * fl;
}
const int N = 20005;
set<int> s;
set<int>::iterator it, nm;
int n;
int l1, l2;
int A1[N], B1[N];
int A2[N], B2[N];
int a1[N], b1[N];
int mps[1005][1005];
inline int get(int x, int y) {
  for (int i = 2; i <= n; i++)
    if (i != x && i != y && mps[x][i] && mps[i][y]) return i;
}
inline void sol(int fl) {
  for (int i = 1; i <= n - 3; i++) {
    a1[i] = read(), b1[i] = read();
    if (a1[i] > b1[i]) swap(a1[i], b1[i]);
    if (a1[i] == 1) s.insert(b1[i]);
    mps[a1[i]][b1[i]] = mps[b1[i]][a1[i]] = 1;
  }
  for (int i = 1; i < n; i++) mps[i][i + 1] = mps[i + 1][i] = 1;
  mps[1][n] = mps[n][1] = 1;
  s.insert(2);
  s.insert(n);
  for (it = s.begin(); it != (--s.end()); it++) {
    while (1) {
      nm = it;
      it++;
      swap(it, nm);
      if ((*nm) == (*it) + 1) break;
      l1++;
      if (fl & 1) A1[l1] = *it, B1[l1] = *nm;
      int tmp = get(*it, *nm);
      mps[(*it)][(*nm)] = mps[(*nm)][(*it)] = 0;
      mps[tmp][1] = mps[1][tmp] = 1;
      s.insert(tmp);
      if (fl == 2) A1[l1] = 1, B1[l1] = tmp;
      if (tmp == (*it) + 1) break;
    }
  }
}
int main() {
  n = read();
  sol(1);
  for (int i = 1; i <= l1; i++) A2[i] = A1[i], B2[i] = B1[i];
  l2 = l1;
  s.clear();
  l1 = 0;
  memset(mps, 0, sizeof mps);
  sol(2);
  printf("%d\n", l1 + l2);
  for (int i = 1; i <= l2; i++) printf("%d %d\n", A2[i], B2[i]);
  for (int i = l1; i >= 1; i--) printf("%d %d\n", A1[i], B1[i]);
  return 0;
}
