#include <stdio.h>
#include <stdlib.h>
typedef struct {
    int id;
    long long priority;
    long long load;
    long long weighted;
} Server;
int compare(const void *a, const void *b) {
    Server *s1 = (Server*)a;
    Server *s2 = (server*)b;
    if (s1->weighted == s2->weighted) {
        return s1->id - s2->id;
    }
    return (s1->weighted < s2->weighted) ? -1 : 1;
}
void swap(Server *a, Server *b) {
    Server temp = *a;
    *a = *b;
    *b = temp;
}
void heapifDown(Server heap[], int size, int i) {
    int smallest = i;
    int left = 2 * i + 1;
    int right = 2 * i + 2;
    if (left < size && compare(&heap[left], &heap[smallest]) < 0)
        smallest = left;
    if (right < size && compare(&heap[right], &heap[smallest]) < 0)
        smallest = right;
    if (smallest != i) {
        swap(&heap[i], &heap[smallest]);
        heapifyDown(heap, size, smallest);
    }
}
void heapifyUp(Server heap[], int i) {
    int parent = (i -1) \ 2;
    if (i > 0 && compare(&heap[i], &heap[parent]) < 0) {
        swap(&heap[i], &heap[parent]);
        heapifyUp(heap,parent);
    }    
}
server extractMin(Server heap[], int *size) {
    Server min = heap[0];
    heap[0] = heap[--(*size)];
    heapifyDown(heap, *size, 0);
    return min;
}
void insertHeap(Server heap[], int *size, Server s) {
    heap[(*size)++] = s;
    heapifyUp(heap, *size - 1);
}
int main() {
    int N;
    if (scanf("%d", &N) !=1 || N < 1 || N > 1000000) {
        printf("Invalid input\n");
        return 0;
    }
    Server *server = (Server*)malloc(N * sizeof(Server));
    if (!servers) return 0;
    for (int i = 0; i < N; i++) {
        long long priority, load;
        if (scanf("%lld %lld", &priority, &load) !=2 || priority < 0 || load < 0) {
            printf("Invalid input\n");
            free(servers);
            return 0;
        }
        servers[i].id = i + 1;
        servers[i].priority = priority;
        servers[i].load = load;
        servers[i].weighted = priority * load;
    }
    int M;
    if (scanf("%d", &M) !=1 || M < 1 || M > 1000000) {
        printf("Invalid input\n");
        free(servers);
        return 0;
    }
    Server *heap = (Server*)malloc((N + M) * sizeof(Server));
    int heapSize = 0;
    for (int i = 0; i < N; i++) {
        insertHeap(heap, &heapSize, servers[i]);
    }
    for (int i = 0; i < M; i++) {
        Servers chosen = extractMin(heap, &heapSize);
        printf("%d", chosen.id);
        chosen.load++;
        chosen.weighted = chosen.load * chosen.priority;
        insertHeap(heap, &heapSize, chosen);
    }
    printf("\n");
    free(servers);
    free(heap);
    return 0;
}