//Normal #define _GLIBCXX_DEBUG #define ll long long #include using namespace std; using Graph = vector>; void print(auto a){ cout << a; } void prints(auto a){ cout << a << " "; } void prints(){ cout << " "; } void printl(auto a){ cout << a << endl; } void printl(){ cout << endl; } void fix(int n){ cout << fixed << setprecision(n); } int siz(string s){ return (int)s.size(); } int main(){ int N, M, K; cin >> N >> M >> K; char C; cin >> C; vector A(N); ll B = 0; for(int i = 0; i < M; i++){ int X; cin >> X; B += X; } B %= K; for(int i = 0; i < N; i++){ cin >> A[i]; A[i] %= K; } ll sum = 0; for(int i = 0; i < N; i++){ C == '+' ? sum += A[i]*M+B : sum += A[i]*B; sum %= K; } printl(sum); return 0; }