#include <bits/stdc++.h>
using namespace std;
int leap[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int nonleap[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int XX, YY, ZZ;
bool func(int x, int y, int z) {
  if (y > 12 || y == 0) return false;
  if (z % 4 == 0) {
    if (x == 0 || x > leap[y - 1]) return false;
  } else {
    if (x == 0 || x > nonleap[y - 1]) return false;
  }
  if (z + 18 > ZZ)
    return false;
  else if (z + 18 < ZZ)
    return true;
  else if (y < YY)
    return true;
  else if (y > YY)
    return false;
  else if (x > XX)
    return false;
  return true;
}
int main() {
  scanf("%d.%d.%d", &XX, &YY, &ZZ);
  int x, y, z;
  scanf("%d.%d.%d", &x, &y, &z);
  if (func(x, y, z) || func(x, z, y) || func(y, x, z) || func(y, z, x) ||
      func(z, x, y) || func(z, y, x))
    cout << "YES";
  else
    cout << "NO";
  return 0;
}
