#include <bits/stdc++.h>
using namespace std;
struct node{
int val;
node *left, *right;
};
void insert(node* &root, int val) {
if(root == nullptr) {
root = new node;
root->val = val;
root->left = root->right = nullptr;
return;
}
if(root->val >= val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
void preOrder(node* root) {
if(root == nullptr) {
return;
}
preOrder(root->left);
printf("%d ", root->val);
preOrder(root->right);
}
int main() {
int n;
node *root = nullptr;
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
int val;
scanf("%d", &val);
insert(root, val);
}
vector<int> vec;
queue<node*> q;
q.push(root);
while(!q.empty()) {
int size = q.size();
vec.push_back(size);
for (int i = 0; i < size; ++i) {
node* cur = q.front();
q.pop();
if(cur->left != nullptr) q.push(cur->left);
if(cur->right != nullptr) q.push(cur->right);
}
}
int size = vec.size();
int n1 = vec[size-1], n2 = vec[size-2];
printf("%d + %d = %d", n1, n2, n1 + n2);
return 0;
}