#include <bits/stdc++.h>
using namespace std;
int nowx[1010], nowy[1010], tarx[1010], tary[1010], n;
int ansx[20 * 1010], ansy[20 * 1010], cnt = 0;
bool ok[1010][1010], tarok[1010][1010];
vector<int> t1, t2;
void sol(vector<int> &t) {
  int d = t.size();
  if (d <= 3) return;
  int nbest = 0, dx = -1, dy = -1;
  for (int i = 0; i < d; i++)
    for (int j = i + 1; j < d; j++)
      if (j != ((i + 1) % t.size()) && j != ((i - 1 + t.size()) % t.size()))
        if (tarok[t[i]][t[j]] || tarok[t[j]][t[i]]) {
          int tmp = (i - j + d) % d;
          if (tmp > (d >> 1)) tmp = d - tmp;
          if (tmp > nbest) {
            dx = i;
            dy = j;
            nbest = tmp;
          }
        }
  if (!ok[t[dx]][t[dy]]) {
    int a = dy, b = dy;
    while (!ok[t[dx]][t[a]] && ((a + 1) % t.size()) != dx)
      a = ((a + 1) % t.size());
    while (!ok[t[dx]][t[b]] && ((b - 1 + t.size()) % t.size()) != dx)
      b = ((b - 1 + t.size()) % t.size());
    int c = ((a - 1 + t.size()) % t.size());
    bool dir = false;
    if (!ok[t[b]][t[c]])
      while ((!ok[t[b]][t[c]] || !ok[t[a]][t[c]]) &&
             ((c - 1 + t.size()) % t.size()) != b) {
        if (c == dy) dir = true;
        c = ((c - 1 + t.size()) % t.size());
      }
    cnt++;
    ansx[cnt] = t[a];
    ansy[cnt] = t[b];
    ok[t[a]][t[b]] = ok[t[b]][t[a]] = false;
    ok[t[dx]][t[c]] = ok[t[c]][t[dx]] = true;
    while (c != dy && b != dy) {
      if (!dir)
        a = c;
      else
        b = c;
      c = ((a - 1 + t.size()) % t.size());
      dir = false;
      if (!ok[t[b]][t[c]])
        while ((!ok[t[b]][t[c]] || !ok[t[a]][t[c]]) &&
               ((c - 1 + t.size()) % t.size()) != b) {
          if (c == dy) dir = true;
          c = ((c - 1 + t.size()) % t.size());
        }
      cnt++;
      ansx[cnt] = t[a];
      ansy[cnt] = t[b];
      ok[t[a]][t[b]] = ok[t[b]][t[a]] = false;
      ok[t[dx]][t[c]] = ok[t[c]][t[dx]] = true;
    }
  }
  vector<int> t1, t2;
  bool ins = false;
  for (int i = 0; i < t.size(); i++) {
    if (!ins)
      t1.push_back(t[i]);
    else
      t2.push_back(t[i]);
    if (i == dx || i == dy) {
      ins ^= 1;
      if (!ins)
        t1.push_back(t[i]);
      else
        t2.push_back(t[i]);
    }
  }
  sol(t1);
  sol(t2);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n - 3; i++) {
    scanf("%d%d", &nowx[i], &nowy[i]);
    ok[nowx[i]][nowy[i]] = ok[nowy[i]][nowx[i]] = true;
  }
  for (int i = 1; i <= n - 3; i++) {
    scanf("%d%d", &tarx[i], &tary[i]);
    tarok[tarx[i]][tary[i]] = tarok[tary[i]][tarx[i]] = true;
    if (tarx[i] > tary[i]) swap(tarx[i], tary[i]);
  }
  vector<int> a;
  for (int i = 1; i <= n; i++) a.push_back(i);
  sol(a);
  printf("%d\n", cnt);
  for (int i = 1; i <= cnt; i++) printf("%d %d\n", ansx[i], ansy[i]);
  return 0;
}
