#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].priority<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);
    }
    print("Task with highest priority:%d\n"heap[0.TaskID);
    return0;
}