#include <bits/stdc++.h>
using namespace std;
const int md = 1000000007;
const int maxn = 1111;
const int maxn4 = 4 * maxn;
const long long inf = 2020202020202020202LL;
vector<pair<int, int>> ans;
vector<pair<int, int>> tf, tl;
vector<int> vert;
int n;
map<pair<int, int>, pair<int, int>> diag, d2;
int g[maxn][maxn];
bool ff(int l, int r) {
  if (l > r) swap(l, r);
  if (diag.find(make_pair(l, r)) != diag.end()) return 1;
  return 0;
}
void process() {
  map<pair<int, int>, pair<int, int>>::iterator it;
  for (it = diag.begin(); it != diag.end(); ++it) {
    int l = it->first.first;
    int r = it->first.second;
    vector<int> little;
    for (int i = 0; i < n; i++)
      if (g[i][l] && g[i][r]) little.push_back(i);
    if (little[0] > little[1]) swap(little[0], little[1]);
    it->second = make_pair(little[0], little[1]);
    d2[it->first] = it->second;
  }
}
pair<int, int> invert(pair<int, int> d) {
  if (d.first > d.second) swap(d.first, d.second);
  pair<int, int> g = diag[d];
  diag.erase(d);
  diag[g] = d;
  if (ff(d.first, g.second)) {
    pair<int, int> a = make_pair(d.first, g.second);
    if (a.first > a.second) swap(a.first, a.second);
    pair<int, int> u = diag[a];
    if (u.first == d.second) diag[a].first = g.first;
    if (u.second == d.second) diag[a].second = g.first;
    if (diag[a].first > diag[a].second) swap(diag[a].first, diag[a].second);
  }
  if (ff(d.first, g.first)) {
    pair<int, int> a = make_pair(d.first, g.first);
    if (a.first > a.second) swap(a.first, a.second);
    pair<int, int> u = diag[a];
    if (u.first == d.second) diag[a].first = g.second;
    if (u.second == d.second) diag[a].second = g.second;
    if (diag[a].first > diag[a].second) swap(diag[a].first, diag[a].second);
  }
  if (ff(d.second, g.second)) {
    pair<int, int> a = make_pair(d.second, g.second);
    if (a.first > a.second) swap(a.first, a.second);
    pair<int, int> u = diag[a];
    if (u.first == d.first) diag[a].first = g.first;
    if (u.second == d.first) diag[a].second = g.first;
    if (diag[a].first > diag[a].second) swap(diag[a].first, diag[a].second);
  }
  if (ff(d.second, g.first)) {
    pair<int, int> a = make_pair(d.second, g.first);
    if (a.first > a.second) swap(a.first, a.second);
    pair<int, int> u = diag[a];
    if (u.first == d.first) diag[a].first = g.second;
    if (u.second == d.first) diag[a].second = g.second;
    if (diag[a].first > diag[a].second) swap(diag[a].first, diag[a].second);
  }
  return g;
}
bool inter(pair<int, int> a, pair<int, int> b) {
  if (a.first > a.second) swap(a.first, a.second);
  if (b.first > b.second) swap(b.first, b.second);
  if (a.first < b.first && a.second > b.first)
    if (b.second > a.second) return 1;
  if (a.first < b.second && a.second > b.second)
    if (b.first < a.first) return 1;
  return 0;
}
void dofor(vector<int> v, vector<pair<int, int>> di,
           vector<pair<int, int>> fin) {
  if (v.size() <= 3) return;
  vector<vector<pair<int, int>>> g(n);
  for (int i = 0; i < di.size(); i++) {
    g[di[i].first].push_back(make_pair(di[i].second, i));
    g[di[i].second].push_back(make_pair(di[i].first, i));
  }
  int pi = 0, ds = 0;
  for (int i = 0; i < fin.size(); i++) {
    int l = lower_bound(v.begin(), v.end(), fin[i].first) - v.begin();
    int r = lower_bound(v.begin(), v.end(), fin[i].second) - v.begin();
    int d = abs(r - l);
    d = min(d, (int)v.size() - d);
    if (d > ds) {
      ds = d;
      pi = i;
    }
  }
  int l = lower_bound(v.begin(), v.end(), fin[pi].first) - v.begin();
  int r = lower_bound(v.begin(), v.end(), fin[pi].second) - v.begin();
  if (l > r) swap(l, r);
  for (int i = l + 1; i < r; i++) {
    for (int j = 0; j < g[v[i]].size(); j++)
      if (g[v[i]][j].first <= v[l]) g[v[i]][j].first += (n + 2);
    sort(g[v[i]].begin(), g[v[i]].end());
    for (int j = g[v[i]].size() - 1; j >= 0; j--) {
      int r2 = g[v[i]][j].second;
      if (inter(fin[pi], di[r2])) {
        ans.push_back(di[r2]);
        di[r2] = invert(di[r2]);
      }
    }
    for (int j = 0; j < g[v[i]].size(); j++)
      if (g[v[i]][j].first >= (n + 2)) g[v[i]][j].first -= (n + 2);
  }
  vector<int> v1, v2;
  vector<pair<int, int>> di1, di2, fin1, fin2;
  for (int i = l; i <= r; i++) v1.push_back(v[i]);
  for (int i = 0; i <= l; i++) v2.push_back(v[i]);
  for (int i = r; i < v.size(); i++) v2.push_back(v[i]);
  for (int i = 0; i < di.size(); i++) {
    int l1 = lower_bound(v.begin(), v.end(), di[i].first) - v.begin();
    int r1 = lower_bound(v.begin(), v.end(), di[i].second) - v.begin();
    if (l1 > r1) swap(l1, r1);
    if (l1 == l && r1 == r) continue;
    if (l <= l1 && r >= l1 && r1 >= l && r >= r1)
      di1.push_back(di[i]);
    else
      di2.push_back(di[i]);
  }
  for (int i = 0; i < fin.size(); i++) {
    int l1 = lower_bound(v.begin(), v.end(), fin[i].first) - v.begin();
    int r1 = lower_bound(v.begin(), v.end(), fin[i].second) - v.begin();
    if (l1 > r1) swap(l1, r1);
    if (l1 == l && r1 == r) continue;
    if (l <= l1 && r >= l1 && r1 >= l && r >= r1)
      fin1.push_back(fin[i]);
    else
      fin2.push_back(fin[i]);
  }
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  dofor(v1, di1, fin1);
  dofor(v2, di2, fin2);
}
int main() {
  ios::ios_base::sync_with_stdio(false);
  cin >> n;
  for (int i = 0; i < n; i++) vert.push_back(i);
  for (int i = 0; i < n - 3; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    if (a > b) swap(a, b);
    tf.push_back(make_pair(a, b));
    diag[make_pair(a, b)] = make_pair(0, 0);
    g[a][b] = 1;
    g[b][a] = 1;
  }
  for (int a = 0; a < n; a++) {
    g[a][(a + 1 + n) % n] = 1;
    g[a][(a - 1 + n) % n] = 1;
  }
  process();
  for (int i = 0; i < n - 3; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    if (a > b) swap(a, b);
    tl.push_back(make_pair(a, b));
  }
  sort(tl.begin(), tl.end());
  dofor(vert, tf, tl);
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++)
    cout << ans[i].first + 1 << " " << ans[i].second + 1 << endl;
  return 0;
}
