#include <bits/stdc++.h>
using namespace std;
int md[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int d, m, y;
int tf(int d1, int m1, int y1) {
  if (m1 < 1 || m1 > 12 || d1 < 1 || d1 > md[m1] + int(m1 == 2 && y1 % 4 == 0))
    return 0;
  return (y1 + 18 < y || y1 + 18 == y && m1 < m ||
          y1 + 18 == y && m1 == m && d1 <= d);
}
int main() {
  int d1, m1, y1;
  scanf("%d. %d. %d", &d, &m, &y);
  scanf("%d. %d. %d", &d1, &m1, &y1);
  if (tf(d1, m1, y1) || tf(d1, y1, m1) || tf(m1, d1, y1) || tf(m1, y1, d1) ||
      tf(y1, d1, m1) || tf(y1, m1, d1))
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
  return 0;
}
