#include <iostream>

int main() {
    int day, month;
    long long year;
    std::cout << "Введите день месяц год: ";
    if (!(std::cin >> day >> month >> year) || year < 1 || month < 1 || month > 12) {
        std::cout << "Ошибка: некорректная дата.\n";
        return 0;
    }
    int days = 31;
    if (month == 4 || month == 6 || month == 9 || month == 11) days = 30;
    else if (month == 2) {
        if (year % 4 == 0) days = 29;
        else days = 28;
    }
    if (day < 1 || day > days) {
        std::cout << "Ошибка: некорректная дата.\n";
        return 0;
    }

    long long a = (14 - month) / 12;
    long long y = year + 4800 - a;
    long long m = month + 12 * a - 3;
    long long jdn = day + (153 * m + 2) / 5 + 365 * y + y / 4 - 32083;
    a = jdn + 32044;
    long long b = (4 * a + 3) / 146097;
    long long c = a - (146097 * b) / 4;
    long long d = (4 * c + 3) / 1461;
    long long e = c - (1461 * d) / 4;
    m = (5 * e + 2) / 153;
    day = e - (153 * m + 2) / 5 + 1;
    month = m + 3 - 12 * (m / 10);
    year = 100 * b + d - 4800 + m / 10;
    std::cout << "Григорианская дата: " << day << "." << month << "." << year << ".\n";
    return 0;
}
