#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);
    }
    printf("Task with Highest Priority: %d\n", heap[0].TaskID);
    return 0;
}