#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[parent].Priority > heap[index].Priority) {
            swap(&heap[parent], &heap[index]);
            index = 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,&Prirority);
        if(TaskID<0 ||Priority<0){
        printf("Invalid Input\n");
        continue;
        
        }
        insert(TaskID,Priority);
    }
        printf("Task with Highest Priority: %d\n", heap[0].TaskID);
    return 0;
    
    
}