#include <bits/stdc++.h>
using namespace std;
long long dt[1 << 16];
vector<int> gnext[16];
int n, m;
int pos[16];
long long calc(int i, int curpos) {
  if (dt[i] != -1) return dt[i];
  long long ans = 0;
  int deg[16] = {
      0,
  };
  for (int j = 0; j < n; j++) {
    if (pos[j] == curpos) {
      curpos++;
      j = -1;
    }
  }
  for (int j = 0; j < n; j++) {
    if (pos[j] != -1) {
      deg[j] = 1;
      if (pos[j] < curpos) {
        continue;
      } else {
        for (int k = 0; k < gnext[j].size(); k++) {
          deg[gnext[j][k]] = 1;
        }
      }
    } else if (i & (1 << j)) {
      deg[j] = 1;
      continue;
    } else {
      for (int k = 0; k < gnext[j].size(); k++) {
        int next = gnext[j][k];
        if (pos[next] != -1 && pos[next] < curpos) {
          deg[j] = 1;
        }
        deg[next] = 1;
      }
    }
  }
  for (int j = 0; j < n; j++) {
    if (deg[j]) continue;
    ans += calc(i | (1 << j), curpos + 1);
  }
  return dt[i] = ans;
}
long long calc() {
  memset(dt, -1, sizeof(dt));
  dt[(1 << n) - 1] = 1LL;
  int used = 0;
  for (int i = 0; i < n; i++) {
    if (pos[i] != -1) {
      used |= 1 << i;
    }
  }
  return calc(used, 0);
}
int main() {
  long long y;
  cin >> n >> y >> m;
  y -= 2001;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    gnext[a].push_back(b);
  }
  memset(pos, -1, sizeof(pos));
  long long tmp = calc();
  if (tmp <= y) {
    printf("The times have changed\n");
    return 0;
  }
  int used[16] = {
      0,
  };
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (used[j]) continue;
      pos[i] = j;
      int imp = 0;
      for (int k = 0; k < n; k++) {
        if (pos[k] == -1) continue;
        for (int l = 0; l < gnext[k].size(); l++) {
          if (gnext[k][l] == i && pos[i] < pos[k]) {
            imp = 1;
            break;
          }
        }
        if (imp) break;
      }
      for (int l = 0; l < gnext[i].size(); l++) {
        int k = gnext[i][l];
        if (pos[k] == -1) continue;
        if (pos[i] > pos[k]) {
          imp = 1;
          break;
        }
      }
      if (imp) {
        pos[i] = -1;
        continue;
      }
      long long res = calc();
      pos[i] = -1;
      if (res <= y) {
        y -= res;
      } else {
        pos[i] = j;
        used[j] = 1;
        printf("%d", j + 1);
        if (i + 1 == n)
          printf("\n");
        else
          printf(" ");
        break;
      }
    }
  }
  return 0;
}
