#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T read(register T& t) {
  register T f = 1;
  register char ch = getchar();
  t = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -f;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') t = t * 10 + ch - '0', ch = getchar();
  t *= f;
  return t;
}
template <typename T, typename... Args>
inline void read(T& t, Args&... args) {
  read(t);
  read(args...);
}
const long long p = 998244353;
inline long long power(register long long x, register long long k = p - 2) {
  register long long re = 1;
  for (; k; k >>= 1, x = x * x % p)
    if (k & 1) re = re * x % p;
  return re;
}
int n;
vector<pair<int, int> > ans;
bool lk[1005];
bitset<1005> var[1005];
void solve(int l, int r) {
  if (l + 1 == r) return;
  if (l > r) return;
  for (int i = l + 1; i < r; i++)
    if (lk[i]) return solve(l, i), solve(i, r);
  for (int i = l + 1; i < r; i++)
    if (var[l][i] && var[r][i]) {
      lk[i] = 1;
      ans.push_back({l, r});
      return solve(l, i), solve(i, r);
    }
}
void solve2(int l, int r) {
  if (l + 1 == r) return;
  if (l > r) return;
  for (int i = l + 1; i < r; i++)
    if (lk[i]) return solve2(l, i), solve2(i, r);
  for (int i = l + 1; i < r; i++)
    if (var[l][i] && var[r][i]) {
      lk[i] = 1;
      ans.push_back({1, i});
      return solve2(l, i), solve2(i, r);
    }
}
pair<int, int> A[1005], B[1005];
int main() {
  read(n);
  for (int i = 1; i <= n - 3; i++) read(A[i].first, A[i].second);
  for (int i = 1; i <= n - 3; i++) read(B[i].first, B[i].second);
  for (int i = 1; i <= n; i++) var[i].reset();
  for (int i = 1; i <= n - 3; i++)
    var[A[i].first][A[i].second] = 1, var[A[i].second][A[i].first] = 1;
  for (int i = 1; i < n; i++) var[i][i + 1] = 1;
  for (int i = 2; i <= n; i++) var[i][i - 1] = 1;
  var[1][n] = var[n][1] = 1;
  memset(lk, 0, sizeof(lk));
  for (int i = 1; i <= n; i++)
    if (var[1][i]) lk[i] = 1;
  solve(2, n);
  vector<pair<int, int> > ans1 = ans;
  ans.clear();
  for (int i = 1; i <= n; i++) var[i].reset();
  for (int i = 1; i <= n - 3; i++)
    var[B[i].first][B[i].second] = 1, var[B[i].second][B[i].first] = 1;
  for (int i = 1; i < n; i++) var[i][i + 1] = 1;
  for (int i = 2; i <= n; i++) var[i][i - 1] = 1;
  var[1][n] = var[n][1] = 1;
  memset(lk, 0, sizeof(lk));
  for (int i = 1; i <= n; i++)
    if (var[1][i]) lk[i] = 1;
  solve2(2, n);
  vector<pair<int, int> > ans2 = ans;
  ans.clear();
  reverse(ans2.begin(), ans2.end());
  printf("%d\n", ans1.size() + ans2.size());
  for (auto i : ans1) printf("%d %d\n", i.first, i.second);
  for (auto i : ans2) printf("%d %d\n", i.first, i.second);
  return 0;
}
