#include <bits/stdc++.h>
using namespace std;
int lcs(const int* s, int n, const int* t, int m) {
if (n < m) {
swap(s, t);
swap(n, m);
}
int* dp = new int[m + 1];
for (int i = 0; i <= m; i++) dp[i] = 0;
int len = 0;
for (int i = 1; i <= n; i++) {
int p = 0;
for (int j = 1; j <= m; j++) {
int c = dp[j];
if (s[i - 1] == t[j - 1]) {
dp[j] = p + 1;
len = max(len, dp[j]);
} else {
dp[j] = max(dp[j - 1], dp[j]);
}
p = c;
}
}
delete[] dp;
return len;
}
int main() {
ios::sync_with_stdio(false);
int n, m, c1, c2;
cin >> n >> m >> c1 >> c2;
int* s = new int[n];
int* t = new int[m];
for (int i = 0; i < n; i++) cin >> s[i];
for (int i = 0; i < m; i++) cin >> t[i];
if (c1 == 0 && c2 == 0) {
cout << 0 << " " << 0;
delete[] s;
delete[] t;
return 0;
}
int k = 0;
int mx = 0;
int l = lcs(s, n, t, m);
while (l > mx) {
mx = l;
k++;
int* new_s = new int[n + n];
for (int i = 0; i < n; i++) {
new_s[i] = s[i];
new_s[i + n] = s[i];
}
delete[] s;
s = new_s;
n += n;
l = lcs(s, n, t, m);
}
cout << c1 * mx << " " << c2 * k << endl;
delete[] s;
delete[] t;
return 0;
}