int f(vector<int> &xs) {    const int n = xs.size();    vector<vector<int>> dp(n, vector<int>(n, 0));    for (int r = 0; r < n; ++r) {        for (int m = 0; m < r; ++m) {            for (int l = 0; l < m; ++l) {                if (2 * xs[m] < xs[l] + xs[r]) {                    dp[m][r] = max<int>(dp[m][r], 1 + dp[l][m]);                }            }        }    }    return ???;}
int f(vector<int> &xs) {    const int n = xs.size();    vector<vector<int>> dp(n, vector<int>(n, 0));    int best = 0;    for (int r = 0; r < n; ++r) {        ATLEAST1: best = max<int>(best, 1);        for (int m = 0; m < r; ++m) {            ATLEAST2: best = max<int>(best, 2);            dp[m][r] = 2;            for (int l = 0; l < m; ++l) {                if (2 * xs[m] < xs[l] + xs[r]) {                    dp[m][r] = max<int>(dp[m][r], 1 + dp[l][m]);                }                best = max<int>(best, dp[m][r]);            }        }    }    return best;}