#include #define forn(i, n) for (int i = 0; i < int(n); i++) using namespace std; const int INF = 1e9; const long long INF64 = 1e18; const int N = 1000 * 1000 + 13; int n, m, k; int s[N], a[N]; bool pos[N]; int dp[N]; int get(int l){ forn(i, n + 1) dp[i] = INF; dp[0] = 0; forn(i, n){ if (!pos[i]) continue; for (int j = i + 1; j <= min(n, i + l); ++j) dp[j] = min(dp[j], dp[i] + 1); } return dp[n]; } int main() { scanf("%d%d%d", &n, &m, &k); forn(i, m) scanf("%d", &s[i]); forn(i, k) scanf("%d", &a[i]); forn(i, n + 1) pos[i] = true; forn(i, m) pos[s[i]] = false; long long ans = INF64; forn(i, k){ long long t = get(i + 1); if (t != INF) ans = min(ans, a[i] * t); } printf("%lld\n", ans == INF64 ? -1 : ans); return 0; }