#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>

const int MAX_N = 40;
const int POINTS_PER_TEST = 4;

int a[MAX_N];
int n, mod;
int expected_sum;

void verdict(int score, const char* msg) {
  printf("%d\n", score);
  fprintf(stderr, "%s\n", msg);
  exit(0);
}

void check(bool cond, const char* msg) {
  if (!cond) {
    verdict(0, msg);
  }
}

void read_input(const char* file_name) {
  FILE* f = fopen(file_name, "r");
  check(f, "Eroare în configurarea problemei: fișier de intrare lipsă.");
  check(fscanf(f, "%d %d", &n, &mod) == 2,
        "Eroare în configurarea problemei: fișier de intrare incorect.");
  for (int i = 0; i < n; i++) {
    check(fscanf(f, "%d ", &a[i]) == 1,
          "Eroare în configurarea problemei: fișier de intrare incorect.");
  }
  check(feof(f), "Eroare în configurarea problemei: fișier de intrare prea lung.");
  fclose(f);
}

void read_correct_output(const char* file_name) {
  FILE* f = fopen(file_name, "r");
  check(f, "Eroare în configurarea problemei: fișier corect lipsă.");
  check(fscanf(f, "%d", &expected_sum) == 1,
        "Eroare în configurarea problemei: fișier corect prea scurt.");
  fclose(f);
}

void read_contestant_output(const char* file_name) {
  FILE* f = fopen(file_name, "r");
  check(f, "Fișier de ieșire lipsă.");

  int contestant_sum;
  check(fscanf(f, "%d ", &contestant_sum) == 1,
        "Prima linie nu conține suma.");
  check(contestant_sum >= expected_sum, "Sumă incorectă.");

  int mask_sum = 0;
  for (int i = 0; i < n; i++) {
    char c = fgetc(f);
    check((c != EOF) && !isspace(c),
          "Șirul de 0 și 1 este prea scurt.");
    check((c == '0') || (c == '1'),
          "Șirul de 0 și 1 conține și alte caractere.");

    if (c == '1') {
      mask_sum += a[i];
    }
  }
  mask_sum %= mod;

  fscanf(f, " ");
  check(feof(f), "Fișierul de ieșire conține prea multe date.");
  fclose(f);

  check(mask_sum == contestant_sum,
        "Suma măștii nu corespunde cu suma tipărită.");

  verdict(POINTS_PER_TEST, "Răspuns corect.");
}

int main() {
  read_input("prajituri.in");
  read_correct_output("prajituri.ok");
  read_contestant_output("prajituri.out");

  return 0;
}
