#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int n, E[maxn][maxn];
vector<pair<int, int> > solve(int chk) {
  memset(E, 0, sizeof E);
  for (int i = (1), iend = (n - 3); i <= iend; ++i) {
    int u, v;
    cin >> u >> v, E[u][v] = E[v][u] = 1;
  }
  for (int i = (1), iend = (n); i <= iend; ++i)
    E[i][i % n + 1] = E[i % n + 1][i] = 1;
  vector<pair<int, int> > res;
  for (int i = (2), iend = (n - 1); i <= iend; ++i) {
    int j = i + 1;
    while (j <= n && !E[1][j]) j++;
    if (j == i + 1 || j > n) continue;
    assert(E[i][j]);
    E[i][j] = E[j][i] = 0;
    int x = -1;
    for (int k = (i + 1), kend = (j - 1); k <= kend; ++k)
      if (E[k][i] && E[j][k]) x = k;
    E[1][x] = E[x][1] = 1;
    res.push_back(!chk ? pair<int, int>{i, j} : pair<int, int>{1, x});
    i--;
  }
  return res;
}
int main() {
  cin >> n;
  vector<pair<int, int> > lef = solve(0);
  vector<pair<int, int> > rig = solve(1);
  cout << lef.size() + rig.size() << endl;
  for (pair<int, int> p : lef) printf("%d %d\n", p.first, p.second);
  for (int i = (rig.size() - 1), iend = (0); i >= iend; --i)
    printf("%d %d\n", rig[i].first, rig[i].second);
  return 0;
}
