#include <stdio.h>
#include <stdlib.h>
#define MAX_TASKS 1001
typedef struct {
    int taskID;
    int priority;
    
}Task;
Task heap[MAX_TASKS];
int heap_size =0;
void swap(task *a, task *b){
    Task temp = *a;
    *a = *b;
    *b = temp;
    
}
void minHeapifyUp(int idx){
    while (idx > 1 && heap[idx].priority<heap[idx/2].priority) {
        swap(&heap[idx],&heap[idx/2]);
        idx /=2;
        
    }
    
}
void insertTask(int taskID,int priority) {
    heap_size++;
    heap[heap_size].taskID = taskID;
    heap[heap_size].priority = priority;
    minHeapifyUp(heap_size);
    
}
int main(){
    int n,taskID,priority;
    if (scanf("%d",&n) != 1) return 1;
    for (int i = 0; i<n:i++){
        if (scanf("%d %d",&taskID,&priority) != 2|| priority < 0 || taskID<0){
            printf("Invalid input");
            
        }
        else{
            insertTask(taskID,priority);
            printf("Task Added: %d", taskID);
        }
    }
    if (heap_size > 0) {
        printf("Task with Highest Priority: %d", heap[1].taskID);
        
    }
    return 0;
}