#include<stdio.h>
#include<stdlib.h>

#define MAX_TASKS 1000

typedef struct{
    int taskID;
    int priority;
} Task;

Task heap[MAX_TASKS];
int size=0;

void swap(Task*a,Task*b){
    Task temp=*a;
    *a=*b;
    *b=temp;
}

void heapifyUp(int index){
    while (index>0){
        int parent=(index-1)/2;
        if(heap[index].priority<heap[parent].priority){
            swap(&heap[index],&heap[parent]);
            index=parent;
        }else{
            break;
        }
    }
}
void insertTask(int taskID,int priority){
    heap[size].taskID=taskID;
    heap[size].priority=priority;
    heapifyUp(size);
    size++;
}
int main(){
    int n;
    if(scanf("%d",&n) !=1 || n<1 || n>1000){
        printf("Invalid Input\n");
        return 0;
    }
    
    for(int 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("Task Added: %d\n",taskID);
}
    if(size>0)
       printf("Task with Highest Priority: %d\n",heap[0],taskID);
    else
       printf("No valid tasks added.\n");
       
    return 0;
}