#include <stdio.h>
#include <stdlib.h>

#define MAX 10

// Node structure (as required by problem notes)
typedef struct Node {
    int value;
    struct Node* next;
} Node;

// Function to insert into linked list
Node* insert(Node* head, int val) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->value = val;
    newNode->next = head;
    return newNode;
}

// Compare function for qsort
int cmp(const void* a, const void* b) {
    return ((int)a - (int)b);
}

int main() {
    int K;
    if (scanf("%d", &K) != 1) {
        printf("Invalid input\n");
        return 0;
    }

    if (K < 4 || K > MAX) {
        printf("Invalid input\n");
        return 0;
    }

    int arr[MAX];
    Node* head = NULL;

    for (int i = 0; i < K; i++) {
        if (scanf("%d", &arr[i]) != 1) {
            printf("Invalid input\n");
            return 0;
        }
        if (arr[i] < 1 || arr[i] > 99) {
            printf("Invalid input\n");
            return 0;
        }
        head = insert(head, arr[i]); // store in linked list too
    }

    // Sort the array
    qsort(arr, K, sizeof(int), cmp);

    int strongest = -1;
    // Check triplets from largest values
    for (int i = K - 1; i >= 2; i--) {
        if (arr[i - 2] + arr[i - 1] > arr[i]) {
            strongest = arr[i];
            break;
        }
    }

    printf("%d\n", strongest);
    return 0;
}