/****************************/
/* 特定月のカレンダー表示 */
/* coded by Y.Suganuma */
/****************************/
import java.io.*;
/*
クラスDateの定義
*/
class Date {
private int year; // 年
private int month; // 月
private int day; // 日
private int tu; // 西暦1年1月1日からの通算日
// コンストラクタ
Date() {}
// コンストラクタ(年月日入力)
Date(int n, int m, int l)
{
int i1;
year = n;
month = m;
day = l;
tu = day;
for (i1 = 1; i1 < year; i1++) {
if ((i1%4 == 0 && i1%100 != 0) || i1%400 == 0)
tu += 366;
else
tu += 365;
}
for (i1 = 1; i1 < month; i1++) {
if (i1 == 2) {
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
tu += 29;
else
tu += 28;
}
else {
if (i1 == 4 || i1 == 6 || i1 == 9 || i1 == 11)
tu += 30;
else
tu += 31;
}
}
}
// コンストラクタ(通算日入力)
Date(int n)
{
int k = 0, sw = 0;
tu = 0;
year = 1;
month = 1;
while (sw == 0) {
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
k += 366;
else
k += 365;
if (k < n) {
tu = k;
year++;
}
else
sw = 1;
}
while (sw > 0) {
if (month == 2) {
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
k = 29;
else
k = 28;
}
else {
if (month == 4 || month == 6 || month == 9 || month == 11)
k = 30;
else
k = 31;
}
if (tu+k < n) {
tu += k;
month++;
}
else {
sw = 0;
day = n - tu;
tu += day;
}
}
}
// -演算
int minus(Date b)
{
return tu - b.tu;
}
}
/*
main
*/
public class Test {
public static void main(String args[]) throws IOException
{
int year, month, day = 1, m = 1, n, k, i1;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// 西暦元年1月1日からの通算日
System.out.print("年は? ");
year = Integer.parseInt(in.readLine());
System.out.print("月は? ");
month = Integer.parseInt(in.readLine());
Date a = new Date (year, month, day);
Date b = new Date (1, 1, 1);
n = a.minus(b);
// 1日の曜日の決定
n = n % 7 + 1;
if (n == 7)
n = 0;
// 出力
System.out.println(" " + year + "年" + month + "月");
System.out.println(" 日 月 火 水 木 金 土");
if (month == 2) {
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
k = 29;
else
k = 28;
}
else {
if (month == 4 || month == 6 || month == 9 || month == 11)
k = 30;
else
k = 31;
}
for (i1 = 0; i1 < 7; i1++) {
if (i1 >= n) {
System.out.print(" ");
if (m > 9)
System.out.print(m);
else
System.out.print(" " + m);
m++;
}
else
System.out.print(" ");
}
System.out.println();
while (m <= k) {
for (i1 = 0; i1 < 7 && m <= k; i1++) {
System.out.print(" ");
if (m > 9)
System.out.print(m);
else
System.out.print(" " + m);
m++;
}
System.out.println();
}
}
}