#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
typedef struct{
    int TaskID;
    int priority;
}Task;
Task heap[MAX];
int heapSize=0;
void swap(Task*a,Task*b){
    temp=*a;
    *a=*b;
    *b=temp;
}
void heapup(int index){
    while(index>1){
        int parent=index/2;
        if(heap[parent].priority>heap[index].priority){
            swap(&heap[parent],&heap[index]);
            index=parent;
        }
        else{
            break;
        }
    }
}
void inserttask(int TaskID,int priority){
    heapSize++;
    heap[heapSize].TaskID=TaskID;
    heap[heapSize].priority=priority;
    heapup(heapSize);
}
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        int TaskID,priority;
        if(scanf("%d %d",&TaskID,&priority)!=2||TaskID<0||priority<0){
            printf("Invalid Input\n");
            continue;
        }
        inserttask(TaskID,priority);
        printf("TaskID added:%d \n",TaskID);
    }
    if(heapSize>0){
        printf("TaskID with highest priority:%d \n",heap[i].TaskID);
    }
    return 0;
}