#include<stdio.h>
#include<stdlib.h>

#define MAX 100
struct task{
    int taskID;
    int priority;
};
struct task haep[MAX];
int size=0;

void swap(struct task*a,struct task*b){
    struct task temp=*a;
    *a=*b;
    *b=temp;
    }
void heapifyUp(int index) {
    if(index<=0)
    return;
    int parent=(index-1)/2;
    if(heap[index].Priority<heap[parent].Priority)
    {
    swap(&heap[index],&heap[parent]);
    heapifyUp(Parent);
    }
}
void insert(int TaskID,int priority) {
    heap[size].TaskID=TaskID;
    heap[size].Priority=priority;
    heapifyUp(size);
    size++;
    printf("task added: %d\n",TaskID);
}

int main() {
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++) {
        int TaskID,Priority;
        scanf("%d%d",&TaskID,&Priority);
        if(TaskID<0||Priority<0) {
            printf("Invalid Input\n");
            continue;
        }
        insert(TaskID,Priority);
    }
printf("Task with highest priority %d\n",heap[0].TaskID);
return 0;
}