#include <bits/stdc++.h>
using namespace std;
int flag;
struct data {
  int a, b, No, No2;
  bool operator<(const data& B) const {
    if (!flag)
      return b < B.b || (b == B.b && a > B.a);
    else if (flag == 1)
      return a > B.a || (a == B.a && No2 > B.No2);
    else if (flag == 2)
      return No2 < B.No2;
    else
      return b > B.b;
  }
} d[100010];
int main() {
  int n, p, k;
  scanf("%d%d%d", &n, &p, &k);
  for (int i = 0; i < (n); ++i) {
    scanf("%d%d", &(d[i].a), &(d[i].b));
    d[i].No = i + 1;
  }
  sort(d, d + n);
  for (int i = 0; i < (n); ++i) d[i].No2 = i;
  flag = 1;
  sort(d + p - k, d + n);
  int mi = 100000000;
  for (int i = (p - k); i < (p); ++i) {
    mi = min(mi, d[i].No2);
    if (i != p - k) printf(" ");
    printf("%d", d[i].No);
  }
  flag = 2;
  sort(d, d + n);
  flag = 3;
  sort(d, d + mi);
  for (int i = 0; i < (p - k); ++i) {
    printf(" %d", d[i].No);
  }
  puts("");
  return 0;
}
