#include <string>
#include <vector>

class Date {
 public:
     Date(int year, int month, int day) {
        Year = year;
        Day = day;
        Month = month;
        if (IsLeap()) {
            days_in_month[1] = 29;
        }
    }
    bool IsLeap() const {
        if (Year % 400 == 0) {
            return true;
        } else if (Year % 100 == 0) {
            return false;
        } else if (Year % 4 == 0) {
            return true;
        } else {
            return false;
        }
    }
    std::string ToString() const {
         std::string ans, day_s, month_s, year_s;
         day_s = std::to_string(Day);
        if (Day < 10) {
            day_s = '0' + day_s;
        }
         month_s = std::to_string(Month);
         if (Month < 10) {
             month_s = '0' + month_s;
         }
         year_s = std::to_string(Year);
        while (year_s.size() < 4) {
            year_s = '0' + year_s;
        }
         ans = day_s + '.' + month_s + '.' + year_s;
         return ans;
     }
    Date DaysLater(int days) const {
         int count = 0;
         Date ans = Date(Year, Month, Day);
        while (count != days) {
            ans.Day++;
            count++;
            if (days_in_month[ans.Month - 1] < ans.Day) {
            ans.Month++;
            ans.Day = 1;
            }
            if (ans.Month > 12) {
                ans.Year++;
                ans.Month %= 12;
            }
        }
        return ans;
     }
    int DaysLeft(const Date& date) const {
         // 02.01.2000 11.01.2000
        int count = 0;
        Date ans = Date(Year, Month, Day);
        while (date.Day != ans.Day || date.Month != ans.Month ||
        date.Year != ans.Year) {
            ans.Day++;
            count++;
            if (days_in_month[ans.Month - 1] < ans.Day) {
                ans.Month++;
                ans.Day = 1;
            }
            if (ans.Month > 12) {
                ans.Year++;
                ans.Month %= 12;
            }
        }
        return count;
     }


 private:
    int Year, Month, Day;
    std::vector<int> days_in_month =
    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
};