day(0,shanbe). day(1,yekshanbe). day(2,doshanbe). day(3,seshanbe). day(4,chaharshanbe). day(5,panjshanbe). day(6,jomeh). month(1,farvardin). month(2,ordibehesht). month(3,khordad). month(4,tir). month(5,mordad). month(6,shahrivar). month(7,mehr). month(8,aban). month(9,azar). month(10,day). month(11,bahman). month(12,esfand). holiday(1,1). holiday(1,2). holiday(1,3). holiday(1,4). holiday(1,12). holiday(1,13). holiday(3,14). holiday(3,15). holiday(11,22). holiday(12,29). hday(M,D):-not(holiday(M,D)),writeln(' '). hday(M,D):-holiday(M,D),writeln(' Tatil '). printCalendar(M,D,W):-D=0,M=<7,M1 is M-1,D1=31,day(W,WeekDay),write(WeekDay),write(D1),month(M1,Month),write(Month),hday(M1,D1). printCalendar(M,D,W):-D=0,M>7,M1 is M-1,D1=30,day(W,WeekDay),write(WeekDay),write(D1),month(M1,Month),write(Month),hday(M1,D1). printCalendar(M,D,W):-day(W,WeekDay),write(WeekDay),write(D),month(M,Month),write(Month),hday(M,D). caln(_,366):-!. caln(W,Day):-Day=<186,M is (Day//31)+1,We is W mod 7,D is Day mod 31,printCalendar(M,D,We),NDay is Day+1,NW is W+1,caln(NW,NDay). caln(W,Day):-Day>186,Da is Day-186,M is (Da//30)+7,We is W mod 7,D is Da mod 30,printCalendar(M,D,We),NDay is Day+1,NW is W+1,caln(NW,NDay). calendar(Day):-caln(Day,1).