import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
int month = scanner.nextInt();
printMonth(year, month);
}
public static void printMonth(int year,int month) {
printMonthTitle(year, month);
int startDay = getStartDay(year, month);
int numOfDaysInMonth = getNumOfDaysInMonth(year, month);
printMonthBody(startDay, numOfDaysInMonth);
}
public static int getStartDay(int year,int month) {
int startDay1901 = 2;
if (year >= 1901) {
long totalNumOfDays = getTotalNumOfDays(year, month);
return (int)(2+totalNumOfDays%7);
} else {
long totalNumOfDays = getTotalNumOfDaysBefore1901(year, month);
if (totalNumOfDays % 7 <= 2) {
return (int) (7-(totalNumOfDays%7));
} else {
return (int) (totalNumOfDays%7-3);
}
}
}
public static long getTotalNumOfDays(int year,int month) {
long total = 0;
for (int i = 1901; i < year; i++)
if (isLeapYear(i))
total = total+366;
else
total = total+365;
for (int i = 1; i < month; i++)
total = total + getNumOfDaysInMonth(year, i);
return total;
}
public static long getTotalNumOfDaysBefore1901(int year,int month) {
long total = 0;
for (int i = year + 1; i < 1901; i++)
if (isLeapYear(i))
total = total+366;
else
total = total+365;
for (int i = month; i <= 12; i++)
total = total + getNumOfDaysInMonth(year, i);
return total;
}
public static int getNumOfDaysInMonth(int year,int i) {
if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)
return 31;
if (i==4||i==6||i==9||i==11)
return 30;
if (i==2)
if (isLeapYear(year))
return 29;
else
return 28;
return 0;
}
public static boolean isLeapYear(int year) {
if (year%400==0||(year%4==0&&year%100!=0))
return true;
return false;
}
public static void printMonthTitle(int year,int month) {
System.out.println(" " + getMonthName(month) + " " + year);
System.out.println("-----------------------------");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
}
public static String getMonthName(int month) {
String monthName = null;
switch (month) {
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
}
return monthName;
}
public static void printMonthBody(int startDay,int numOfDaysInMonth) {
for (int i = 0; i < startDay; i++)
System.out.print(" ");
for (int i = 1; i <= numOfDaysInMonth; i++) {
if (i < 10)
System.out.print(" " + i);
else
System.out.print(" " + i);
if ((i + startDay) % 7 == 0)
System.out.println();
}
System.out.println();
}
}