#include <bits/stdc++.h>
int const maxn = 1001;
struct data {
  bool poly[maxn][maxn];
} p1, p2;
int n, m;
std::vector<std::pair<int, int>> ans;
std::vector<std::pair<int, int>> rev_ans;
std::istream& operator>>(std::istream& is, data& p) {
  for (int i = 0, x, y; i < n - 3; i++) {
    is >> x >> y;
    x--;
    y--;
    p.poly[x][y] = p.poly[y][x] = true;
  }
  for (int i = 0; i < n; i++)
    p.poly[i][(i + 1) % n] = p.poly[(i + 1) % n][i] = true;
  return is;
}
void transform(data& p, bool forward) {
  for (int i = 0; i < n - 2; i++) {
    bool ordered = true;
    int last = 1, j = 2;
    for (; j < n; j++)
      if (p.poly[0][j]) {
        if (last + 1 != j) {
          ordered = false;
          break;
        }
        last = j;
      }
    if (ordered) break;
    int k = 2;
    for (; k < n; k++)
      if (p.poly[k][last] && p.poly[k][j]) break;
    if (forward)
      ans.push_back(std::make_pair(last, j));
    else
      rev_ans.push_back(std::make_pair(0, k));
    p.poly[last][j] = p.poly[j][last] = false;
    p.poly[k][0] = p.poly[0][k] = true;
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin >> n;
  std::cin >> p1 >> p2;
  transform(p1, true);
  transform(p2, false);
  std::reverse(rev_ans.begin(), rev_ans.end());
  std::copy(rev_ans.begin(), rev_ans.end(), std::back_inserter(ans));
  std::cout << ans.size() << '\n';
  for (auto i : ans) std::cout << i.first + 1 << ' ' << i.second + 1 << '\n';
}
