#include<stdio.h>
#include<stdlib.h>
#define MAX 100
struct task
{
    int tastid;
    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(i=0;i<n;i++)
    {
     int taskid,prority;
     scanf("%d%d",&taskid,&priority);
     if(taskid<0||priority<0)
     {
         printf("Inavlid Input\n");
         continue;
     }
     insert(taskid,priority);
     
    }
    printf("Task with Height priority: %d\n",heap[0].taskid);
    return 0;
}