#include <stdio.h>
#include <stdlib.h>
#include <ctype.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++;
}
void clearInputBuffer() {
    int ch;
    while ((ch = getchar()) ! = '\n' && ch ! = EOF);
}
int main() {
    int n;
    if (scanf("%d", &n) != 1 || n < 1 || n > MAX) {
        printf("Invalid Input\n");
        return 0;
    }

    for (int i = 0; i < n;) {
        int taskID, priority;
        int result = scanf("%d %d", &taskID, &priority);

        if (result != 2) {
            printf("Invalid Input\n");
            clearInputBuffer();
            i++;
            continue;
        }

        if (taskID < 0 || priority < 0) {
            printf("Invalid Input\n");
            i++;
            continue;
        }

        insert(taskID, priority);
        printf("Task Added: %d\n", taskID);
        i++;
    }
    if (size > 0) {
        printf("Task with Highest Priority: %d\n", heap[0].taskID);
    }

    return 0;
}