#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <vector>
static FILE *fr, *fw;
// Declaring variables
static int N;
static int d;
static int L;
static int* messaggio;
static char* plaintext;
// Declaring functions
int fast_pow(int base, int esp, int modd) {
if (esp == 0) return 1;
if (esp == 1) return base % modd;
int meta = fast_pow(base, esp / 2, modd);
if (esp % 2 == 0) return (meta * meta) % modd;
else return (meta * meta % modd * base) % modd;
}
void decifra(int N, int d, int L, int* messaggio, char* plaintext) {
plaintext[L] = char(0);
for (int i = 0; i < L; i++) {
plaintext[i] = char(fast_pow(messaggio[i], d, N));
}
}
int main() {
fr = stdin;
fw = stdout;
// Iterators used in for loops
int i0;
// Reading input
fscanf(fr, "%d %d %d", &N, &d, &L);
messaggio = (int*)malloc(100 * sizeof(int));
plaintext = (char*)malloc(110 * sizeof(char));
for (i0 = 0; i0 < L; i0++)
fscanf(fr, "%d", &messaggio[i0]);
// Calling functions
decifra(N, d, L, messaggio, plaintext);
// Writing output
fprintf(fw, "%s\n", plaintext);
fclose(fr);
fclose(fw);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxhc3NlcnQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RhdGljIEZJTEUgKmZyLCAqZnc7CgovLyBEZWNsYXJpbmcgdmFyaWFibGVzCnN0YXRpYyBpbnQgTjsKc3RhdGljIGludCBkOwpzdGF0aWMgaW50IEw7CnN0YXRpYyBpbnQqIG1lc3NhZ2dpbzsKc3RhdGljIGNoYXIqIHBsYWludGV4dDsKCi8vIERlY2xhcmluZyBmdW5jdGlvbnMKCmludCBmYXN0X3BvdyhpbnQgYmFzZSwgaW50IGVzcCwgaW50IG1vZGQpIHsKICAgIGlmIChlc3AgPT0gMCkgcmV0dXJuIDE7CiAgICBpZiAoZXNwID09IDEpIHJldHVybiBiYXNlICUgbW9kZDsKICAgIGludCBtZXRhID0gZmFzdF9wb3coYmFzZSwgZXNwIC8gMiwgbW9kZCk7CiAgICBpZiAoZXNwICUgMiA9PSAwKSByZXR1cm4gKG1ldGEgKiBtZXRhKSAlIG1vZGQ7CiAgICBlbHNlIHJldHVybiAobWV0YSAqIG1ldGEgJSBtb2RkICogYmFzZSkgJSBtb2RkOwp9Cgp2b2lkIGRlY2lmcmEoaW50IE4sIGludCBkLCBpbnQgTCwgaW50KiBtZXNzYWdnaW8sIGNoYXIqIHBsYWludGV4dCkgewogICAKICAgIHBsYWludGV4dFtMXSA9IGNoYXIoMCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IEw7IGkrKykgewogICAgICAgIHBsYWludGV4dFtpXSA9IGNoYXIoZmFzdF9wb3cobWVzc2FnZ2lvW2ldLCBkLCBOKSk7CiAgICAgICAgCiAgICB9Cn0KCmludCBtYWluKCkgewoJZnIgPSBzdGRpbjsKCWZ3ID0gc3Rkb3V0OwoKCS8vIEl0ZXJhdG9ycyB1c2VkIGluIGZvciBsb29wcwoJaW50IGkwOwoKCS8vIFJlYWRpbmcgaW5wdXQKICAgICAgICBmc2NhbmYoZnIsICIlZCAlZCAlZCIsICZOLCAmZCwgJkwpOwoJbWVzc2FnZ2lvID0gKGludCopbWFsbG9jKDEwMCAqIHNpemVvZihpbnQpKTsKCXBsYWludGV4dCA9IChjaGFyKiltYWxsb2MoMTEwICogc2l6ZW9mKGNoYXIpKTsKCWZvciAoaTAgPSAwOyBpMCA8IEw7IGkwKyspCiAgICAgICAgICAgIGZzY2FuZihmciwgIiVkIiwgJm1lc3NhZ2dpb1tpMF0pOwoKCS8vIENhbGxpbmcgZnVuY3Rpb25zCglkZWNpZnJhKE4sIGQsIEwsIG1lc3NhZ2dpbywgcGxhaW50ZXh0KTsKCgkvLyBXcml0aW5nIG91dHB1dAogICAgICAgIGZwcmludGYoZncsICIlc1xuIiwgcGxhaW50ZXh0KTsKCQoJZmNsb3NlKGZyKTsKCWZjbG9zZShmdyk7CglyZXR1cm4gMDsKfQo=