#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &x) {
  T f = 1;
  x = 0;
  char c;
  for (c = getchar(); !isdigit(c); c = getchar())
    if (c == '-') f = -1;
  for (; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
  x *= f;
}
struct task {
  int a, b, id, tag;
} t[100005];
int n, p, k, cnt, num;
bool pre(task x, task y) {
  if (x.b != y.b) return x.b < y.b;
  if (x.a != y.a) return x.a > y.a;
  return x.tag < y.tag;
}
bool stu(task x, task y) { return x.a == y.a ? x.b > y.b : x.a > y.a; }
int main() {
  read(n), read(p), read(k);
  for (int i = 1; i <= n; ++i) read(t[i].a), read(t[i].b), t[i].id = i;
  sort(t + 1, t + 1 + n, pre);
  for (int i = 1; i <= p - k; ++i) t[i].tag = 1;
  sort(t + 1, t + 1 + n, stu);
  for (int i = 1; cnt < k; ++i)
    if (!t[i].tag) {
      cnt++;
      printf("%d ", t[i].id);
      t[i].tag = 2;
    }
  cnt = 0;
  sort(t + 1, t + 1 + n, pre);
  for (int i = n; cnt < p - k; --i) {
    if (num >= k) {
      cnt++;
      printf("%d ", t[i].id);
    }
    if (t[i].tag == 2) num++;
  }
  return 0;
}
