#include <bits/stdc++.h>
using namespace std;
void print(long long mask, long long n) {
  for (long long i = 0; i < n; i++) cout << bool(mask & (1 << i));
}
vector<long long> age;
long long get_c(long long l, long long n, vector<long long> gr) {
  if (n == 0) return 1;
  vector<long long> used(age.size());
  for (long long i = 0; i < l; i++) used[age[i]] = 1;
  vector<long long> v;
  for (long long i = 0; i < used.size(); i++)
    if (!used[i]) v.push_back(i);
  vector<vector<long long> > dp(n, vector<long long>(1 << n));
  for (long long i = 0; i < n; i++) {
    long long good = 1;
    for (long long k = 0; k < l; k++) {
      if (gr[l + i] & (1 << k)) good = min(good, (long long)(age[k] > v[0]));
      if (gr[k] & (1 << (l + i))) good = min(good, (long long)(age[k] < v[0]));
    }
    dp[0][(1 << i)] = good;
  }
  for (long long i = 0; i < n - 1; i++) {
    for (long long mask = 0; mask < (1 << n); mask++) {
      if (dp[i][mask] == 0) continue;
      for (long long j = 0; j < n; j++) {
        if (mask & (1 << j)) continue;
        long long good = 1;
        for (long long k = 0; k < l && good; k++) {
          if (gr[l + j] & (1 << k))
            good = min(good, (long long)(age[k] > v[i + 1]));
          if (gr[k] & (1 << (l + j)))
            good = min(good, (long long)(age[k] < v[i + 1]));
        }
        for (long long k = l; k < l + n && good; k++) {
          if (gr[l + j] & (1 << k))
            good = min(good, (long long)!bool(mask & (1 << (k - l))));
        }
        dp[i + 1][mask ^ (1 << j)] += dp[i][mask] * good;
      }
    }
  }
  return dp[n - 1][(1 << n) - 1];
}
signed main() {
  long long n, k, m;
  cin >> n >> k >> m;
  k -= 2001;
  vector<long long> gr(n);
  for (long long i = 0; i < m; i++) {
    long long a, b;
    cin >> a >> b;
    a--;
    b--;
    gr[b] |= (1 << a);
  }
  if (get_c(0, n, gr) <= k) {
    cout << "The times have changed" << endl;
    return 0;
  }
  age.resize(n);
  vector<long long> res(n);
  vector<long long> used(n);
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < n; j++) {
      if (used[j]) continue;
      age[i] = n - 1 - j;
      long long c = get_c(i + 1, n - i - 1, gr);
      if (k >= c) {
        k -= c;
      } else {
        used[j] = 1;
        res[i] = j;
        break;
      }
    }
  }
  for (long long i = 0; i < n; i++) cout << res[i] + 1 << " ";
}
