#include<stdio.h>
#include<stdlib.h>

#define MAX 100
struct TASK{
    int TaskID;
    int Priority;
};
struct Task heap[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].Priorty < 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 Priorty:%d\n",heap[0].TaskID);
      return 0;
  
      
  }