uses
  testlib, SysUtils;

type
  int = longint;

var
  s, t, jury: string;
  k, q, p, d, a, b, i: int;

begin
  s := ouf.readword(blanks, blanks);
  jury := ans.readword(blanks, blanks);
  if (s = '-1') then
  begin
    if (jury = '-1') then
      quit(_OK, 'Искомого числа не существует');
    quit(_WA, 'Выведено "-1", хотя ответ существует');
  end;
  for i := 1 to length(s) do
    if (s[i] < '0') or (s[i] > '9') then
      quit(_PE, 'Неожиданный символ "' + s[i] + '"');

  k := inf.readlongint;
  q := inf.readlongint;
  p := inf.readlongint;
  d := inf.readlongint;

  if (length(s) <> k) then
    quit(_WA, 'Число не является ' + inttostr(k) + '-значным: ' + s);
  if (s <> '0') and (s[1] = '0') then
    quit(_WA, 'В числе присутствуют ведущие нули: ' + s);

  a := 0;
  for i := 1 to length(s) do
    a := a + ord(s[i]) - ord('0');
  if (a <> q) then
    quit(_WA, 'Сумма цифр не равна ' + inttostr(q) + ': ' + s);

  a := 0;
  b := 0;
  for i := length(s) downto 1 do
  begin
    inc(b, (ord(s[i]) - ord('0')) * d);
    inc(a, b mod 10);
    b := b div 10;
  end;
  inc(a, b);
  if (a <> p) then
    quit(_WA, 'После умножения на ' + inttostr(d) + ' сумма цифр не равна ' + inttostr(p) + ': ' + s);

  if (jury = '-1') then
    quit(_fail, 'Участник нашел ответ: ' + s);
  if (jury < s) then
    quit(_WA, 'Число не минимально: ' + s + ', правильный ответ: ' + jury);
  if (jury > s) then
    quit(_fail, 'Лучше, чем у жюри: ' + s + ' вместо ' + jury);
  quit(_OK, 'Правильный ответ: ' + s);
end.