## 음력과 양력의 상호변환 (1841~2043 년의 203년간) ##
------ lun2sol() ------
음력 1841년 1월 1일이 양력으로 1841년 1월 23일 이다.
이 날짜를 기준으로 하여 변환하고자 하는 음력날짜까지의 날수를 계산하고 이를 양력 기준 날짜 1841년 1월 23일에 더하여 음력에 대한 양력 날짜를 계산한다. 즉, 1841년 1월 1일부터 시작하여 변환하고자 하는 음력 날짜까지 날수 td를 구하고, 양력 1841년 1월 23일부터 td일 경과하면 몇 년 몇 월 며칠이 되는지를 구하면 이 날짜가 바로 음력 날짜에 대한 양력 날짜가 된다.
그 다음에 양력 날짜에 대한 요일, 일간지 및 년 간지를 구하여 출력한다.
------ sol2lun() ------
양력 1841년 1월 23일부터 양력 y년 m월 d일까지의 날수 td를 구한다음 음력 1841년 1월 1일부터 td일이 경과한 음력 날짜를 구한다. 예로서 양력 1842년 6월 14일에 대한 음력을 구해보자.
양력 1841년 1월 23일부터 1842년 6월 14일까지의 날수 td를 구하면 500일이 된다. td 즉 500이 1841년의 날수 384보다 크므로 500에서 384를 빼어 그 나머지 116을 구한다. 다시 이 116을 1842년의 날수와 비교한다. 그 결과 116이 355보다 크지 않으므로 년도는 1842년이 되고 계속하여 달을 구한다. 116은 1842년의 1월의 날수 29보다 크므로 116에서 29를 빼어 87을 얻는다. 다시 2월의 날수 30과 비교한다. 역시 크므로 87에서 30을 빼어 57을 얻는다. 다시 57이 3월의 날수 29일보다 크므로 57에서 29를 빼어 28을 얻는다. 28은 4월의 날수 30보다 크지 않으므로 달은 4월이 되고 날짜는 28일이 된다. 그 결과 양력 1842년 6월 14일은 음력 1842년 4월 28일이 된다.
#include <stdlib.h>
#include <ctype.h> /* isdegit() */
#include <stdio.h>
#include <conio.h> /* getch() */
#include "lundat.h"
void sol2lun(void);
void lun2sol(void);
void febdays(int y);
int is_number(char *string);
int get_year(int lower, int upper);
int get_month(int lower, int upper);
int get_day(int lower, int upper);
char *gan[10] ={ "갑","을","병","정","무","기","경","신","임","계" };
char *jee[12] ={ "자","축","인","묘","진","사","오","미","신","유","술","해" };
char *ddi[12] ={ "쥐","소","범","토끼","용","뱀","말","양","원숭이","닭","개","돼지" };
char *week[7] ={ "일","월","화","수","목","금","토" };
int md[12] ={ 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
void main(){
printf("음력/양력 변환 프로그램n");
printf("1:음력=>양력n2:양력=>음력n");
int select;
scanf("%d",&select);
switch(select){
case 1 : lun2sol();
break;
case 2 : sol2lun();
break;
default : printf("You can only select 1 or 2n");
break;
}
}
/* 양력을 음력으로 변환 */
void sol2lun(){
int ly, lm, ld;
int sy, sm, sd;
int m1, m2, mm, i, j, w;
int dt[203], k1, k2;
long td, td1, td2;
char *yoon;
td1 = 1840 * 365L + 1840/4 - 1840/100 + 1840/400 + 23;
sy = get_year(1841, 2043);
sm = get_month(1, 12);
febdays(sy);
sd = get_day(1, md[sm-1]);
td2 = (sy-1) * 365L + (sy-1)/4 - (sy-1)/100 + (sy-1)/400 + sd;
for(i=0; i<sm-1; i++) td2 += md[i];
td = td2 - td1 + 1;
for(i=0; i<=sy-1841; i++){
dt[i] = 0;
for(j=0; j<12; j++){
switch(kk[i][j]){
case 1 : mm = 29; break;
case 2 : mm = 30; break;
case 3 : mm = 58; break; /* 29+29 */
case 4 : mm = 59; break; /* 29+30 */
case 5 : mm = 59; break; /* 30+29 */
case 6 : mm = 60; break; /* 30+30 */
}
dt[i] += mm;
}
}
ly = 0;
while(1){
if(td > dt[ly]){
td -= dt[ly];
ly++;
}else break;
}
lm = 0;
yoon = "";
while(1){
if(kk[ly][lm] <= 2){
mm = kk[ly][lm] + 28;
if(td > mm){
td -= mm;
lm++;
}else break;
}else{
switch(kk[ly][lm]){
case 3 : m1 = 29;
m2 = 29;
break;
case 4 : m1 = 29;
m2 = 30;
break;
case 5 : m1 = 30;
m2 = 29;
break;
case 6 : m1 = 30;
m2 = 30;
break;
}
if(td > m1){
td -= m1;
if(td > m2){
td -= m2;
lm++;
}else{
yoon = "YOON";
break;
}
}else break;
}
}
ly += 1841;
lm += 1;
ld = td-1;
w = td2 % 7;
i = (td2+4) % 10;
j = (td2+2) % 12;
k1 = (ly+6) % 10;
k2 = (ly+8) % 12;
printf("nSolar date : %d(%d). %d. %d. %sn", sy, sy+2333, sm, sd, week[w]);
printf("Lunar date : %d[%s-%s, %s] %s %d. %d. [%s-%s]n", ly, gan[k1], jee[k2], ddi[k2], yoon, lm, ld, gan[i], jee[j]);
}
/* 음력을 양력으로 변환 */
void lun2sol(){
int lyear, lmonth, lday, leapyes;
int syear, smonth, sday;
int mm, y1, y2, m1;
int i, j, k1, k2, leap, w;
long td, y;
lyear = get_year(1841, 2043);
lmonth = get_month(1, 12);
y1 = lyear - 1841;
m1 = lmonth - 1;
leapyes = 0;
if(kk[y1][m1] > 2)
do{
printf("Leap? [Y=1 N=0] : ");
scanf("%d", &leapyes);
}while(leapyes < 0 || leapyes > 1);
if(leapyes==1){
switch(kk[y1][m1]){
case 3 :
case 5 : mm = 29;
break;
case 4 :
case 6 : mm = 30;
break;
}
}else{
switch(kk[y1][m1]){
case 1 :
case 3 :
case 4 : mm = 29;
break;
case 2 :
case 5 :
case 6 : mm = 30;
break;
}
}
lday = get_day(1, mm);
td = 0;
for(i=0; i<y1; i++)
for(j=0; j<12; j++)
switch(kk[i][j]){
case 1 : td += 29; break;
case 2 : td += 30; break;
case 3 : td += 58; break; /* 29+29 */
case 4 : td += 59; break; /* 29+30 */
case 5 : td += 59; breka; /* 30+29 */
case 6 : td += 60; break; /* 30+30 */
}
for (j=0; j<m1; j++)
switch(kk[y1][j]){
case 1 : td +=29; break;
case 2 : td += 30; break;
case 3 : td += 58; break; /* 29+29 */
case 4 : td += 59; break; /* 29+30 */
case 5 : td += 59; break; /* 30+29 */
case 6 : td += 60; break; /* 30+30 */
}
if(leapyes==1)
switch(kk[y1][m1]){
case 3 :
case 4 : td += 29; break;
case 5 :
case 6 : td += 30; break;
}
td += lday + 22;
/* td : 1841년 1월 1일부터 원하는 날까지의 전체 날수의 합 */
y1 = 1840;
do{
y1++;
leap = (y1 % 400==0) || (y1 % 100 != 0) && (y1 % 4 ==0);
if(leap) y2 = 366;
else y2 = 365;
if(td <= y2) break;
td -= y2;
}while(1);
syear = y1;
md[1] = y2 - 337;
m1 = 0;
do{
m1++;
if(td <= md[m1-1]) break;
td -= md[m1-1];
}while(1);
smonth = m1;
sday = td;
y = syear - 1;
td = y * 365L + y/4 - y/100 + y/400;
for(i=0; i<smonth-1; i++) td += md[i];
td += sday;
w = td % 7;
i = (td + 4) % 10;
j = (td + 2) % 12;
k1 = (lyear + 6) % 10;
k2 = (lyear + 8) % 12;
printf("Lunar date : %d[%s-%s] %s %d. %d. [%s-%s]", lyear, gan[k1], jee[k2], ddi[k2], lmonth, lday, gan[i], jee[j]);
printf("nSolar date : %d(%d). %d. %d. %sn", syear, syear+2333, smonth, sday, week[w]);
}
void febdays(int y){
int leap = y%400==0 || y%100!=0 || y%4==0;
if(leap) md[1] = 29;
else md[1] = 28;
}
int is_number(char *string){
int i=0, flag=1;
while(string[i]!=''){
if(!isdigit(string[i])){
flag=0;
break;
}
i++;
}
return (flag);
}
int get_year(int lower, int upper){
int y;
char temp[5];
do{
do{
printf("Year [%d - %d] = ", lower, upper);
scanf("%s", temp);
}while(!is_number(temp));
y = atoi(temp);
}while(y < lower || y > upper);
return (y);
}
int get_month(int lower, int upper){
int m;
char temp[5];
do{
do{
printf("Month [%d - %d] = ", lower, upper);
scanf("%s", temp);
}while(!is_number(temp));
m = atoi(temp);
}while(m < lower || m > upper);
return (m);
}
int get_day(int lower, int upper){
int d;
char temp[5];
do{
do{
printf("Day [%d - %d] = ", lower, upper);
scanf("%s", temp);
}while(!is_number(temp));
d = atoi(temp);
}while(d < lower || d > upper);
return (d);
}
/*
lundat.h
아래의 음력 데이터는
<평달>
작은 달 : 1
큰달 : 2
<윤달이 있는 달>
평달이 작고 윤달도 작으면 : 3
평달이 작고 윤달이 크면 : 4
평달이 크고 윤달이 작으면 : 5
평달과 윤달이 모두 크면 : 6
이렇게 하면 1년의 데이터가 모두 12개이면 된다.
또한 어느 달이 윤달인지도 쉽게 알 수 있다.
*/
char kk[203][12] ={
/* 1841 */ 1, 2, 4, 1, 1, 2, 1, 2, 1, 2, 2, 1,
2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1,
2, 2, 2, 1, 2, 1, 4, 1, 2, 1, 2, 1,
2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1,
2, 1, 2, 1, 5, 2, 1, 2, 2, 1, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2,
/* 1851 */ 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 5, 2,
2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 2,
2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2,
1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 5, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2,
2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2,
2, 1, 6, 1, 1, 2, 1, 1, 2, 1, 2, 2,
/* 1861 */ 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2,
2, 1, 2, 1, 2, 2, 1, 2, 2, 3, 1, 2,
1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1, 2, 4, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2,
1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2,
1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2, 1,
2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1,
2, 2, 2, 1, 2, 1, 2, 1, 1, 5, 2, 1,
/* 1871 */ 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2,
1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2,
1, 1, 2, 1, 2, 4, 2, 1, 2, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1,
2, 2, 1, 1, 5, 1, 2, 1, 2, 2, 1, 2,
2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 2, 4, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2,
/* 1881 */ 1, 2, 1, 2, 1, 2, 5, 2, 2, 1, 2, 1,
1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2,
2, 1, 1, 2, 3, 2, 1, 2, 2, 1, 2, 2,
2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
2, 2, 1, 5, 2, 1, 1, 2, 1, 2, 1, 2,
2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 5, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2,
/* 1891 */ 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 5, 2, 2, 1, 2, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1,
2, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
2, 1, 5, 2, 2, 1, 2, 1, 2, 1, 2, 1,
2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 5, 2, 2, 1, 2,
/* 1901 */ 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1,
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2,
1, 2, 2, 4, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2,
1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1,
/* 1911 */ 2, 1, 2, 1, 1, 5, 1, 2, 2, 1, 2, 2,
2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2,
2, 2, 1, 2, 5, 1, 2, 1, 2, 1, 1, 2,
2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 5, 2, 2, 1, 2, 2,
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2,
/* 1921 */ 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2,
2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2,
1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2,
2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1,
2, 1, 2, 5, 2, 1, 2, 2, 1, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2,
1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2,
1, 2, 2, 1, 1, 5, 1, 2, 1, 2, 2, 1,
/* 1931 */ 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1,
2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2,
1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1,
2, 2, 1, 1, 2, 1, 4, 1, 2, 2, 1, 2,
2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1,
/* 1941 */ 2, 2, 1, 2, 2, 4, 1, 1, 2, 1, 2, 1,
2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2,
1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2,
1, 1, 2, 4, 1, 2, 1, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2,
2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2,
2, 5, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2,
2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1,
/* 1951 */ 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2,
2, 1, 4, 1, 1, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2,
1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1,
/* 1961 */ 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1,
2, 2, 5, 2, 1, 1, 2, 1, 1, 2, 2, 1,
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2,
1, 2, 2, 1, 2, 1, 5, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2,
/* 1971 */ 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1,
2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 1, 5, 2, 1, 1, 2,
2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1,
2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1,
2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
/* 1981 */ 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2,
2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2,
2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2,
2, 1, 2, 2, 1, 1, 2, 1, 1, 5, 2, 2,
1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1,
2, 1, 2, 2, 1, 5, 2, 2, 1, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2,
1, 2, 1, 1, 5, 1, 2, 1, 2, 2, 2, 2,
/* 1991 */ 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2,
1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2,
1, 2, 5, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
1, 2, 2, 1, 2, 2, 1, 5, 2, 1, 1, 2,
1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2,
1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1,
2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1,
2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1,
/* 2001 */ 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2,
1, 5, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2,
1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2,
1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2,
2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2,
2, 2, 1, 1, 5, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
/* 2011 */ 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1,
2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2,
1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2,
2, 1, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2,
2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2,
2, 1, 2, 5, 2, 1, 1, 2, 1, 2, 1, 2,
/* 2021 */ 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2,
1, 5, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1,
2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2,
1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2,
1, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1,
2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2,
1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1,
/* 2031 */ 2, 1, 5, 2, 1, 2, 2, 1, 2, 1, 2, 1,
2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 5, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 2, 1, 4, 1, 1, 2, 1, 2, 2,
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2,
2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1,
2, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 1,
2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1,
/* 2041 */ 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2,
1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, };