#include <iostream>
#include <string>
using std::cout;
using std::string;

const int daysInThisMonth[] = 
	{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const string conversionTable[] = 
	{"Error", "January", "February", "March", "April", "May", "June", 
	"July", "August", "Setptember", "October", "November", "December"};

class Date
{
	public:
		Date(int _month = 1, int _day = 1, int _year = 1970)
		{
			setMonth(_month);
			setDay(_day);
			setYear(_year);
		}
		void setMonth(int _month)
		{
			if(_month < 1 || _month > 12)
			{
				cout << "Invalid month. Setting to default value: January.\n"; 
				month = 1;
			}
			else
				month = _month;
		}
		void setDay(int _day)
		{
			if(_day < 1 || _day > daysInThisMonth[month])
			{
				cout << "Invalid day for " << month << ". Setting to default value: 1.\n"; 
				day = 1;
			}
			else
				day = _day;
		}
		void setYear(int _year)
		{
			if(_year < 1582)
			{
				cout << "Invalid year. Setting to default value: 1970.\n"; 
				year = 1970;
			}
			else
				year = _year;
		}
		string getMonthName()
		{
			return conversionTable[month];
		}
		int getMonth()
		{
			return month;
		}
		int getDay()
		{
			return day;
		}
		int getYear()
		{
			return year;
		}
	private:
		int month;
		int day;
		int year;
		
};
