#include <bits/stdc++.h>
using namespace std;
const int N = 100007;
int n, k, p;
struct P {
  int id;
  int l, r;
} a[N], b[N];
int com1(P x, P y) {
  if (x.l == y.l) return x.r > y.r;
  return x.l > y.l;
}
int com2(P x, P y) {
  if (x.r == y.r) return x.l > y.l;
  return x.r < y.r;
}
int com3(P x, P y) { return x.r > y.r; }
int main() {
  while (~scanf("%d%d%d", &n, &k, &p)) {
    for (int i = 1; i <= n; i++) scanf("%d %d", &a[i].l, &a[i].r), a[i].id = i;
    sort(a + 1, a + n + 1, com2);
    sort(a + k - p + 1, a + n + 1, com1);
    int tmp = a[k - p + 1].r;
    int tmp1 = 0;
    for (int i = k - p + 1; i <= k; i++)
      if (a[i].r <= tmp) {
        if (a[i].r == tmp)
          tmp1 = max(a[i].l, tmp1);
        else
          tmp1 = a[i].l;
        tmp = a[i].r;
      }
    int tot = 0;
    for (int i = 1; i <= k - p; i++)
      if (a[i].r < tmp || (a[i].r == tmp && a[i].l >= tmp1)) {
        b[++tot].id = a[i].id;
        b[tot].l = a[i].l;
        b[tot].r = a[i].r;
      }
    for (int i = k + 1; i <= n; i++)
      if (a[i].r < tmp || (a[i].r == tmp && a[i].l >= tmp1)) {
        b[++tot].id = a[i].id;
        b[tot].l = a[i].l;
        b[tot].r = a[i].r;
      }
    sort(b + 1, b + tot + 1, com3);
    for (int i = 1; i <= k - p; i++) printf("%d ", b[i].id);
    for (int i = k - p + 1; i <= k; i++) printf("%d%c", a[i].id, " \n"[i == k]);
  }
}
