#include<stdio.h>
#include<stdlib.h>
#define MAX 1005
typedef struct{
    int taskid;
    int pri;
}Task;
Task heap[MAX];
int heaps=0;
void sw(Task *a,Task *b)
{
    Task t=*a;
    *a=*b;
    *b=t;
}
void heapu( int i)
{
    while(i>1&& heap[i].pri<heap[i/2].pri)
    {
        sw(&heap[i],&heap[i/2]);
        i/=2;
    }
}
void in(int ti,int pri)
{
    heaps++;
    heap[heaps].ti=ti;
    heap[heaps].pri=pri;
    heapu(heaps);
    printf("Task Added: %d\n",ti);
    
}
Task getm()
{
    return heap[1];
}
int main()
{
    int n;
    if(scanf("%d",&n)!=1||n<=0||n>1000)
    {
        printf("Invalid input\n");
        return 0;
    }
    for(int i=0;i<n;i++)
{
    int taski,pri;
    if(scanf("%d %d",&taski,&pri)!=2||pri<0)
    {

        printf("Invalid input\n");
        continue;
    }
    in(taski,pri);
    
}
if(heaps>0)
{
    Task heig=getm();
    printf("Task with Highest Priority: %d\n",heig.taski);
}
    return 0;
}