#include <cstdio>
#include <map>
#include <string>
#include <iostream>
std::map <std::string, std::pair<long long, long long> > dict;

long long user_value, ans_value, input_n, input_W;
long long input_u[64], input_v[64];
// char name;

int main(){
  FILE *user_out, *input, *answer, *code;
  user_out = fopen("user_out", "r");
  answer = fopen("answer", "r");
  input = fopen("input", "r");
  fscanf(user_out, "%lld", &user_value);
  fscanf(input, "%lld %lld", &input_n, &input_W);
  fscanf(answer, "%lld", &ans_value);
  long long user_W = input_W, user_ans = 0;
  
  char s[100];
  for(int i = 1; i <= input_n; i++) {
    int u, v;
    fscanf(input, "%s %d %d", s, &u, &v);
    // fprintf(stderr, "Get %s | %d | %d", s, u, v);
    dict[std::string(s)] = std::make_pair(u, v);
  }
  while (~fscanf(user_out, "%s", s)) {
    user_W += dict[std::string(s)].second;
    user_ans += dict[std::string(s)].first;
  }
  if (user_ans != user_value) {
    printf("0\n");
    fprintf(stderr, "ILLEGEL MONEY %lld\n", user_ans);
    return 0;
  }
  if (user_W < 0) {
    printf("0\n");
    fprintf(stderr, "ILLEGEL ENERGY\n");
    return 0;
  }

  if (user_value < ans_value) {
    printf("0\n");
    fprintf(stderr, "Not good enough\n");
    return 0;
  }
  if (user_value > ans_value) {
    printf("0\n");
    fprintf(stderr, "Data Error ?\n");
    return 0;
  }
  printf("100\n");
  fprintf(stderr, "OK\n");
}