#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int n;
set<int> source[N], target[N];
void init() {
  cin >> n;
  for (int i = 1; i <= n - 3; i++) {
    int u, v;
    cin >> u >> v;
    if (u > v) {
      swap(u, v);
    }
    source[u].insert(v);
  }
  for (int i = 1; i <= n - 3; i++) {
    int u, v;
    cin >> u >> v;
    if (u > v) {
      swap(u, v);
    }
    target[u].insert(v);
  }
  for (int i = 1; i < n; i++) {
    source[i].insert(i + 1);
    target[i].insert(i + 1);
  }
  source[1].insert(n);
  target[1].insert(n);
}
void get_solution(set<int> cur[], vector<pair<int, int> > &ans, bool tag) {
  while (true) {
    pair<int, pair<int, int> > tmp;
    tmp.first = -1;
    for (int i = 2; i <= n; i++) {
      for (set<int>::iterator it = cur[i].begin(); it != cur[i].end(); it++) {
        if ((*it) != 1 && (*it) - i > tmp.first) {
          tmp.first = (*it) - i;
          tmp.second = make_pair(i, *it);
        }
      }
    }
    if (tmp.first < 2) {
      break;
    }
    int u = tmp.second.first, v = tmp.second.second;
    for (int i = u + 1; i <= v - 1; i++) {
      if (cur[u].find(i) != cur[u].end() && cur[i].find(v) != cur[i].end()) {
        cur[1].insert(i);
        cur[u].erase(v);
        if (tag) {
          ans.push_back(make_pair(1, i));
        } else {
          ans.push_back(make_pair(u, v));
        }
        break;
      }
    }
  }
  if (tag) {
    reverse(ans.begin(), ans.end());
  }
}
void work() {
  vector<pair<int, int> > ans[2];
  get_solution(source, ans[0], false);
  get_solution(target, ans[1], true);
  cout << (int)ans[0].size() + ans[1].size() << endl;
  for (int i = 0; i < (int)ans[0].size(); i++) {
    cout << ans[0][i].first << " " << ans[0][i].second << endl;
  }
  for (int i = 0; i < (int)ans[1].size(); i++) {
    cout << ans[1][i].first << " " << ans[1][i].second << endl;
  }
}
int main() {
  ios::sync_with_stdio(false);
  init(), work();
  return 0;
}
