#include<stdio.h>
#include<limits.h>
#define MAX_TASKS 1000
typedef struct{
int id;
int priority;
}Task;
Task heap[MAX_TASKS];
int size=0;

void swap(Task *a,Task *b){
Task temp=*a;
*a=*b;
*b=temp;
}
void minHeapify(int i){
    int smallest=i;
    int left=2*i+1;
    int right=2*i+2;
    
    if(left<size&&heap[left].priority<heap[smallest].priority){
        smallest=right;
    }
    if(right<size && heap[right].priority<heap[smallest].priority){
    }
    if(smallest !=i){
        swap(&heap[i],&heap[smallest]);
        minHeapify(smallest);
    }
}

void insert(int id, int priority){
    if(size>=MAX_TASKS)
    return;
    
    int i=size++;
    heap[i].id=id;
    heap[i].priority=priority;
    
    while(i!=0 && heap[i].priority<heap[(i-1)/2].priority){
        swap(&heap[i],&heap[(i-1)/2]);
        i=(i-1)/2;
    }
}

int getHightpriorityTaskID(){
    if(size==0) return -1;
    return heap[0].id;
}
int main(){
    int n,i;
    int taskID,priority;
    
    if(scanf("%d",&n)!=1||n<1||n>MAX_TASKS)
    
    for(i=0;i<n;i++){
        if( scanf("%d%d",& TasksID,& priority)!=2)
        break;
        if( TaskID<=0||priority<=0){
            printf("invalid input\n");
            continue;
        }
        insert(taskID,priority);
        printf("Task Add:%d\n",taskID);
    }
    
    int highestID= GetHighst Priority TaskID();
    if(highestID!=-1){
        print("Task with Highest Priority:%d\n",highestID);
    }else{
        printf("No valid tasks were scheduled.\n")
    }
    return 0;
}