for (int j = 1; j < K; ++j) { for (int i = 1; i + (1 << j) - 1 <= n; ++i) { mx[i][j] = max(mx[i - 1][j], mx[i + (1 << (j - 1))][j - 1]); } }