#include<stdio.h>
#include<stdlib.h>
#define MAX 100
struct Task
{
    int TaskID;
    int p;
};
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 par=(index-1)/2;
    if(heap[index].p<heap[par].p)
    {
        swap(&heap[index],&heap[p]);
        heapifyUp(par);
    }
}void insert(int TaskID,int priority)
{
    heap[size].TaskID=TaskID;
    heap[size].p=p;
    heapifyUp(size);
    size++;
    printf("Task  Added:%d\n",TaskID)
}
int main()
{
    int n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        int TaskID,p;
        scanf("%d%d",&TaskID,&p);
        if(TaskID<0||p<0)
        {
            printf("Invalid input\n");
            continue;
        }
        insert(TaskID,p);
    }
    printf("Task with Highest Priority:%d\n",heap[0].TaskID);
    return 0;
}