三角形较大的两边之差必然小于第三边; 要尽可能找解,即找到A-B>C且(A>B>C); 那么A要尽可能大(取最大的); B尽可能小,C尽可能大————>导致B和C是相邻的(排序后); A固定,遍历B,C相邻情况即可;

using namespace std;
int main()
{
    int n;
    int ans[4];
    ans[3] = 0;
    cin >> n;
    vector<int> arr(n);
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);
    sort(arr.begin(), arr.end());
    for (int i = n - 2; i > 0; i--)
    {
        if (arr[n - 1] - arr[i] < arr[i - 1])
        {
            ans[0] = arr[n - 1];
            ans[1] = arr[i - 1];
            ans[2] = arr[i];
            ans[3] = 1;
            break;
        }
    }
    if (ans[3])
        printf("%d %d %d\n", ans[0], ans[1], ans[2]);
    else
        cout << "No solution" << endl;
    return 0;
}