#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
struct task{
    int id;
    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 heapUp(int index){
    if(index<=0)
    return;
    int parent=(index-1)/2;
    if(heap[index].p<heap[parent].p){
        swap(&heap[index],&heap[parent]);
        heapUp(parent);
    }
}
int heapdown(int index){
    int left=2*index+1;
    int right=2*index+2;
    int small=index;
    if(left<size && heap[left].p<heap[small].p)
        small=left;
    if(right<size && heap[right].p<heap[small].p)
        small=right;
        if(small!=index){
            swap(&heap[index],&heap[small]);
            heapdown(small);
        }
}
void insert(int id,int p){
    heap[size].id=id;
    heap[size].p=p;
    heapup(size);
    size++;
    printf("task added: %d\n",id);
}
struct task extract(){
    struct task mintask=heap[0];
    heap[0]=heap[size-1];
    size--;
    heapdown(0);
    return mintask;
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        int id,p;
        scanf("%d%d",j&id,&p);
        if(id<0 || p<0){
            printf("Invalid input\n");
            continue;
        }
        insert(id,p);
    }
    if(size>0)
    printf("Task with Highest Priority: %d\n",heap[0].id);
    else
    printf("No valid task");
    return 0;
}