#include <stdio.h>
#include <stdlib.h>
#define FIN "shop.in"
#define FOUT "shop.out"
#define FOK "shop.ok"
int N, C, A[32], B[32], NMin; long long L, V[32];
void error(char msg[], int p)
{
fprintf(stderr, msg);
printf("%d", p);
exit(0);
}
int main(void)
{
int i, a, nmin; long long p;
FILE *f;
f = fopen(FIN, "r");
if (!f) error("Nu am putut deschide fisierul de intrare", 0);
if (fscanf(f, "%d %d %lld", &N, &C, &L) != 3)
error("Eroare in fisierul de intrare", 0);
if (N < 1 || N > 30 || C < 1 || C > 10 || L < 0 || L > (long long)1e16)
error("Fisierul de intrare nu respecta restrictiile", 0);
for (i = 0; i < N; i++)
{
if (fscanf(f, "%d %d", A+i, B+i) != 2)
error("Eroare in fisierul de intrare", 0);
if (A[i] < 0 || A[i] > 32 || B[i] < 1 || B[i] > (int)1e9)
error("Fisierul de intrare nu respecta restrictiile", 0);
for (p = 1, a = A[i]; a && p < L; a--, p *= C);
V[i] = p;
if (a)
error("Fisierul de intrare nu respecta restrictiile", 0);
}
f = fopen(FOK, "r");
if (!f) error("Nu am putut deschide fisierul de verificare", 0);
if (fscanf(f, "%d", &NMin) != 1)
error("Eroare in fisierul de verificare", 0);
f = fopen(FOUT, "r");
if (!f) error("Fisier de iesire inexistent", 0);
if (fscanf(f, "%d", &nmin) != 1)
error("Raspuns gresit", 0);
if (nmin != NMin)
error("Raspuns gresit", 0);
for (i = 0; i < N; i++)
{
if (fscanf(f, "%d", &a) != 1)
error("Raspuns gresit", 0);
if (a > B[i] || a < 0)
error("Raspuns gresit", 0);
for (; a; a--) L -= V[i];
}
if (!L)
error("OK", 10);
else
error("Raspuns gresit", 0);
return 0;
}