#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = uint32_t; using namespace std; template constexpr T INF = ::numeric_limits::max() / 32 * 15 + 208; template vector make_v(U size, const T& init){ return vector(static_cast(size), init); } template auto make_v(U size, Ts... rest) { return vector(static_cast(size), make_v(rest...)); } template void chmin(T &a, const T &b){ a = (a < b ? a : b); } template void chmax(T &a, const T &b){ a = (a > b ? a : b); } int main() { int n, m; cin >> n >> m; int ans = -1, ind = -1, cnt = 0; while(cnt < m){ vector v(n); for (auto &&i : v) scanf("%d", &i); auto submax = make_v(n, n, -1), submin = make_v(n, n, -1); for (int i = 0; i < n; ++i) { for (int j = i; j < n; ++j) { if(i == j) submax[i][j] = v[i], submin[i][j] = v[i]; else { submax[i][j] = max(submax[i][j-1], v[j]); submin[i][j] = min(submin[i][j-1], v[j]); } } } int sum = 0; for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { int val = 0, ok = 0; if(i != 0){ if(v[i] < v[j]) { if(v[i] < submax[0][i-1]) ok = 1, val = max(val, submax[0][i-1]); }else { if(v[i] > submin[0][i-1]) ok = 1; } } if(i+1 < j){ if(submax[i+1][j-1] > max(v[i], v[j])){ ok = 1, val = max(val, submax[i+1][j-1]); } if(submin[i+1][j-1] < min(v[i], v[j])){ ok = 1; } } if(j != n-1){ if(v[j] < v[i]) { if(v[j] < submax[j+1][n-1]) ok = 1, val = max(val, submax[j+1][n-1]); }else { if(v[j] > submin[j+1][n-1]) ok = 1; } } if(ok) val = max({val, v[i], v[j]}); sum += val; } } if(ans < sum) ans = sum, ind = cnt; cnt++; } cout << ind << "\n"; return 0; }