uses wincrt;
function ToShamsi(n:integer):string;
var
x,y,flag,c :integer;
month,day:string;
begin
x:=1;
y:=1;
flag:=0;
for x:=1 to 12 do
begin
if flag=1 then
break;
if x<7 then
c:=31
else
c:=30;
for y:=1 to c do
begin
if (x<=7) and (n=((x-1)*31+y)) then
begin
flag:=1;
x:=x-1;
break;
end;
if (x>7) and (n=(186+y+(x-7)*30)) then
begin
flag:=1;
x:=x-1;
break;
end;
end;
end;
str(x,month);
str(y,day);
ToShamsi:=month+'/'+day
end;
{************************************************}
function GetDay(n,ch:integer):string;
var
x:integer;
day:integer;
begin
x:=1;
while x<=n do
begin
x:=x+7;
end;
x:=x-7;
x:=n-x;
day:=x+ch;
if day>7 then
day:=day-7;
case day of
1: writeln('Sat');
2: writeln('Sun');
3: writeln('Mon');
4: writeln('Tue');
5: writeln('Wed');
6: writeln('Thu');
7: writeln('Fri');
end;
end;
{***********************************************}
function ToMiladi(sh:string):string;
var
month,day:string;
x,y,l,err:integer;
x1,y2:string;
begin
if copy(sh,2,1)='/' then
begin
l:=length(sh);
x1:=copy(sh,1,1);
y2:=copy(sh,3,l-2);
end
else
begin
l:=length(sh);
x1:=copy(sh,1,2);
y2:=copy(sh,4,l-3);
end;
val(x1,x,err);
val(y2,y,err);
case x of
1:
begin
if y<12 then
begin
x:=3;
y:=y+20;
end
else
begin
x:=4;
y:=y-11;
end;
end;
2:
begin
if y<11 then
begin
x:=4;
y:=y+20;
end
else
begin
x:=5;
y:=y-10;
end;
end;
3:
begin
if y<11 then
begin
x:=5;
y:=y+21;
end
else
begin
x:=6;
y:=y-10;
end;
end;
4:
begin
if y<10 then
begin
x:=6;
y:=y+21;
end
else
begin
x:=7;
y:=y-9;
end;
end;
5:
begin
if y<10 then
begin
x:=x+2;
y:=y-9;
end
else
begin
x:=x+3;
y:=y-9;
end;
end;
6:
begin
if y<10 then
begin
x:=x+2;
y:=y-9;
end
else
begin
x:=x+3;
y:=y-9;
end;
end;
8:
begin
if y<10 then
begin
x:=x+2;
y:=y-9;
end
else
begin
x:=x+3;
y:=y-9;
end;
end;
7:
begin
if y<9 then
begin
x:=9;
y:=y+22;
end
else
begin
x:=10;
y:=y-8;
end;
end;
9:
begin
if y<10 then
begin
x:=11;
y:=y-21;
end
else
begin
x:=12;
y:=y-9;
end;
end;
10:
begin
if y<11 then
begin
x:=12;
y:=y+21;
end
else
begin
x:=1;
y:=y-10;
end;
end;
11:
begin
if y<12 then
begin
x:=1;
y:=y+20;
end
else
begin
x:=2;
y:=y-11;
end;
end;
12:
begin
if y<10 then
begin
x:=2;
y:=y+19;
end
else
begin
x:=3;
y:=y-9;
end;
end;
end;
str(x,month);
str(y,day);
ToMiladi:=month+'/'+day
end;
{***********************************************}
{Main Body}
var
n,ch:integer;
shamsi:string;
begin
writeln('Please enter an integer number for the days of the week.');
writeln('( 1->Sat 2->Sun 3->Mon 4->Tue 5->Wed 6->Thu 7->Fri )');
readln(ch);
if ((ch>7) or (ch<1)) then
begin
writeln('Err:You should enter an integer number between 0 and 8.');
readln;
halt;
end;
writeln('Please enter the day of year:');
readln(n);
if (n>366) or (n<1) then
begin
writeln('error: You should enter an integer number between 0 and 367' );
readln;
halt;
end;
writeln('----------------------Result is-----------------------------');
GetDay(n,ch);
shamsi:=ToShamsi(n);
writeln('Shamsi = ',shamsi);
writeln('Miladi = ',ToMiladi(shamsi));
readln;
end.