#include <iostream>
#include <string>
class Date {
 public:
  int day, month, year;
  explicit Date(int year, int month, int day) {
    this->day = day;
    this->month = month;
    this->year = year;
  }
  bool IsLeap() const {
    if (this->year % 100 == 0 && this->year % 400 != 0) return false;
    return this->year % 4 == 0;
  }
  std::string ToString() const {
    std::string _day = this->day < 10 ? "0" +
        std::to_string(this->day) :
                       std::to_string(this->day);
    std::string _month = this->month < 10 ? "0" +
        std::to_string(this->month) :
                         std::to_string(this->month);
    std::string _year = std::to_string(this->year);
    if (this->year < 1000 && this->year > 99)
      _year.append("0" + std::to_string(this->year));
    if (this->year < 100 && this->year > 9)
      _year.append("00" + std::to_string(this->year));
    if (this->year < 10)
      _year.append("000" + std::to_string(this->year));
    return _day + "." + _month + "." + _year;
  }
  Date DaysLater(int days) const {
    int m = this->month, d = this->day, y = this->year;
    int m2[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int i, k = 0, p, a;
    for (i = 0; i < m; i++)
      k = k + m2[i];
    k = k + d + days;
    int day_in_year = IsLeap() ? 366 : 365;
    if (k <= day_in_year) {
      if (IsLeap()) m2[2] = 29;
      for (i = 0; i < 13; i++) {
        p = k - m2[i];
        if (p <= m2[i + 1]) {
          a = i + 1;
          break;
        } else {
          k = p;
        }
      }
      return Date(y, a, p);
    } else {
      k = k - day_in_year;
      for (i = 0; i < 13; i++) {
        p = k - m2[i];
        if (p <= m2[i + 1]) {
          a = i + 1;
          break;
        } else {
          k = p;
        }
      }
      return Date(y + 1, a, p);
    }
  }
  int DaysLeft(const Date &date) const {
    int m = this->month, d = this->day, y = this->year;
    if (m < 3) {
      y--;
      m += 12;
    }
    int fir = 365 * y + y / 4 - y / 100
        + y / 400 + (153 * m - 457) / 5 + d - 306;
    int m1 = date.month, d1 = date.day, y1 = date.year;
    if (m1 < 3) {
      y1--;
      m1 += 12;
    }
    int sec = 365 * y1 + y1 / 4 - y1 / 100
        + y1 / 400 + (153 * m1 - 457) / 5 + d1 - 306;
    return fir > sec ? fir - sec : sec - fir;
  }
};