Program FNG;
Uses crt;
Type bignum = Ansistring;
Var f,g: text;
n,i: longint;
s: bignum;
Function add(a,b: bignum): bignum;
Var s,carry,i: longint;
c: bignum;
Begin
While length(a)>length(b) do b:='0'+b;
While length(b)>length(a) do a:='0'+a;
c:=''; carry:=0;
For i:=length(a) downto 1 do
Begin
s:=Ord(A[i])-48 + Ord(B[i])-48+carry;
carry:=s div 10;
c:=Chr(s mod 10 + 48)+c;
End;
If carry>0 then c:='1'+c;
add:=c;
End;
Function fibo(n: longint): bignum;
Var f1,f2,f3: bignum;
i: longint;
Begin
f1:='1';
f2:='1';
For i:=2 to n do
Begin
f3:=add(f1,f2);
f1:=f2;
f2:=f3;
End;
fibo:=f1;
End;
Begin
Clrscr;
Write('Nhap n: '); Readln(n);
s:='0';
Writeln('Fibo thu ',n,' la: ',fibo(n));
For i:=1 to n do
s:=add(s,fibo(i));
Write('S = ',s);
Readln
End.