#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define MAX 1000

typedef struct{
    int taskID;
    int priority;
}Task;

Task heap[MAX];
int size=0;
void swap(Task* a,Task* b){
    Task temp=*a;
    *a=*b;
    *b=temp;
}
void haepifyUp(int index){
    while( index > 0){
        int parent =(index-1)/2;
        if (heap[parent].priority>heap[index].priority){
            swap(&heap[parent],&heap[index]);
            index=parent;
        }else{
            break;
        }
    }
}
void insert(int taskID,int priority){
    heap[size].taskID=taskID;
    heap[size].proirity=priority;
    heapifyUp(size);
    size++;
}

void clearInputBuffer(){
    int ch;
    while((ch = getchar())!='\n' && ch!=EOF);
    }
    
int main(){
    int n;
  if(scanf("%d",&n) != 1 || n <= 0 || n>MAX) {
      printf("Invalid Input");
      return 0;
  } 
  for(int i=0;i<n;){
      int taskID,priority;
      int result=scanf("%d%d",&taskID,&priority);

      if(result!=2){
      printf("Invalid Input");
      clearInputBuffer();
      i++;
      continue;
  }
  if(taskID < 0 || priority < 0){
    printf("Invalid Input");
    i++;
    continue;  
  }
   insert(taskID,priority);
   printf("Task Added:%d\n",taskID);
   i++;
}
if(size > 0){
 printf("Task with Highest Priority:%d\n",heap[0].taskID);
}
return 0;
}