#include <bits/stdc++.h>
using namespace std;
namespace {
using i64 = long long;
int N, M, X;
vector<vector<i64>> _t, _e;
vector<int> W, S;
} // namespace
void init(int L, int N, vector<i64> T, vector<int> W, int X, int M, vector<int> S) {
::N = N, ::M = M, ::X = X, ::W = W, ::S = S;
::W.push_back(X);
_t = vector(N + 1, vector<i64>(M));
_e = vector(N + 1, vector<i64>(M));
for (int i = 0; i < N; ++i) {
_t[i][0] = T[i];
}
return;
}
i64 arrival_time(i64 Y) {
auto t = _t, e = _e;
t[N][0] = Y;
for (int j = 1; j < M; ++j) {
for (int i = 0; i <= N; ++i) {
t[i][j] = e[i][j] = t[i][j - 1] + W[i] * (S[j] - S[j - 1]);
}
for (int i = 0; i <= N; ++i) {
for (int k = 0; k <= N; ++k) {
if (t[k][j - 1] < t[i][j - 1]) {
t[i][j] = max(t[i][j], e[k][j]);
}
}
}
}
return t[N][M - 1];
}