import std.stdio;
import std.conv;
import std.string;
import core.bitop;

void main() {
  auto maxCoin500 = readln.chomp.to!uint;
  auto maxCoin100 = readln.chomp.to!uint;
  auto maxCoin50 = readln.chomp.to!uint;
  auto total = readln.chomp.to!uint;
  auto count = 0U;

  foreach (c5h;0..maxCoin500 + 1) {
    if (c5h * 500 > total) break;
    foreach (c1h;0..maxCoin100 + 1) {
      if (c5h * 500 + c1h * 100 > total) break;

      auto requireCoin50 = (total - c5h * 500 - c1h * 100) / 50;

      if (requireCoin50 <= maxCoin50) {
        ++count;
      }
    }
  }
  writeln(count);
}
