#include <bits/stdc++.h>
const int MAXN = 1000 + 10;
int n;
std::set<int> g[MAXN];
std::vector<std::pair<int, int> > process(bool ty) {
  std::vector<std::pair<int, int> > ans;
  for (int i = 2; i < n; i++) {
    while (!g[1].count(i + 1)) {
      int k = *std::next(g[1].find(i));
      assert(g[i].count(k));
      g[i].erase(k);
      g[k].erase(i);
      for (auto v : g[i]) {
        if (v != 1 && g[k].count(v)) {
          assert(i < v && v < k);
          g[1].insert(v);
          g[v].insert(1);
          if (ty) {
            ans.emplace_back(v, 1);
          } else {
            ans.emplace_back(i, k);
          }
          break;
        }
      }
    }
  }
  return ans;
}
void read() {
  for (int i = 1; i <= n; i++) g[i].clear();
  for (int i = 1; i <= n - 3; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    g[a].insert(b);
    g[b].insert(a);
  }
  for (int i = 1; i < n; i++) {
    g[i].insert(i + 1);
    g[i + 1].insert(i);
  }
  g[1].insert(n);
  g[n].insert(1);
}
int main() {
  scanf("%d", &n);
  read();
  auto ans1 = process(0);
  read();
  auto ans2 = process(1);
  std::reverse(ans2.begin(), ans2.end());
  ans1.insert(ans1.end(), ans2.begin(), ans2.end());
  printf("%lu\n", ans1.size());
  for (auto i : ans1) {
    printf("%d %d\n", i.first, i.second);
  }
}
