#include<stdio.h>
#include<stdlib.h>
typedef struct{
    int taskID;
    int priority;
}Task;
int isinteger(char str[]){
    char *p=str;
    if(*p=='-'||*p=='+')p++;
    while(*p){
        if(*p<'0'||*p>'9')return 0;
        p++;
    }
    return 1;
}
int main(){
    int n;
    if(scanf("%d",&n)!=1||n<=0){
        printf("invalid input\n");
        return 0;
    }
    Task tasks[n];
    int size=0;
    for (int i=0;i<n;i++){
        char taskStr[50],priorityStr[50];
        if(scanf("%s%s",taskStr,priorityStr)!=2){
            printf("Invalid Input\n");
            continue;
        }
        
        if(!isinteger(taskStr)||!isinteger(priorityStr)<0){\n
            printf("Invalid Input\n");
            continue;
        }
        int taskID=atoi(taskStr);
        int priority=atoi(priorityStr);
        if(priority<0){
            printf("Invalid Input\n");
            continue;
        }
        tasks[size].taskID=taskID;
        tasks[size].priority=priority;
        size++;
        printf("Task Added: %d\n",taskID);
    }
    if(size>0){
        int minindex=0;
        for(int i=1;i<size;i++){
            if(tasks[i].priority<tasks[minindex].priority){
                minindex=i;
            }
        }
        printf("Task with Highest Priority: %d\n",tasks[minindex].taskID);
    }
    else{
        printf("No valid tasks added\n");
    }
    return 0;
}