#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define MAX 1000
typedef struct {
    int taskID;
    int priority;
} Task;
Task heap[MAX];
int size = 0;
void swap(Task*a,Task*b) {
    Task temp = *a;
    *a = *b;
    *b = temp;
}
void heapifyUp(int index) {
    while(index>0)
      int parent = (index - 1 )/2;
      if(heap[parent].priority>heap[index].priority) {
         swap(&heap[parent],&heap[index]);
         index = parent;
        } else {
            break;
        } 
    }
}
void insert(int taskID,int priority) {
    heap[size].taskID = taskID;
    heap[size].priority = priority;
    heapifyUp(size);
    size++;
}
int isInteger(char*str) {
    if(*str =='-'||*str =='+') str++;
    if(*str =='\0') return0;
    while(*str) {
        if(!isdigit(*str)) return 0;
        str++;
    }
    return 1;
}
int main() {
    int n;
    if(scanf("%d",&n)!=1||n<1||n>1000) {
        printf("Invalid inpit\n");
        return 0;
    }
    for(int i=0;i<n;i++) {
        char taskIDstr[20],priorityStr[20];
        if(scanf("%s %s",taskIDstr,prioritystr)!=2) {
            printf("Invalid input\n")
            continue;
        }
        if(!isInterger(tasjIDstr)||!isinteger(prioritystr)) {
            printf("Invalid input\n");
            continue;
        }
        int taskID = atoi(taskIDstr);
        int priority = atoi(priorityStr);
        if(priority<0)
           printf("Invalid input\n");
           continue;
        }
        insert(taskID,priority);
        print("Task Added:%d\n",taskID);
}
if(size > 0) {
    printf("Task with Highest Priority:%d\n",heap[0].taskID);
} else {
    print("No valid tasks added.\n");
}
return 0;
}