. , , ,

,,,

- , Bit — ,

1. :

- .

2. :

- , -

Bit :

╔════════════════════════════════════════════════════════╗

║   ║

╠═══╦════════════════════╦════╦═════╦════════════════════╣

║ ║ Π ║ ║ No ║ ║

║No ╠═══════╦═══╦════════╣ ║ .╠══════╦══════╦══════╣

║ ║║║║ ║║ 1 ║ 2 ║ 3 ║

╠═══╬═══════╬═══╬════════╬════╬═════╬══════╬══════╬══════╣

Bit stud :

╔════════════════════════════════════════════════════════╗

║   ║

╠════╦═════════════════════════════════════╦═════╦═══════╣

║ ║ Π ║ No ║ ║

║ No ╠════════════╦═══════════╦════════════╣ .║ ║

║ ║ ║ ║ ║║ ║

╠════╬════════════╬═══════════╬════════════╬═════╬═══════╣

, -

, , .

.

3. , :

3.1 , -

, , -

:

- ,

- ,

- ,

- ,

- ,

- .

3.2 :

- ,

- ,

- ,

- ,

- ,

- .

4. :

4.1

4.2 .

5. - :

1.

4.10.96

2. , ,

18.10.96

3.

25.10.96

4. -

15.11.96

5.

29.11.96

6. -

24.12.96

7.

25.12.96

/ ../

/ .., -1-95/

.................................... 4

1.

................... 4

2. ... 4

3. ............... 5

4. ........... 7

5. :

5.1 Begin ............. 8

5.2 Main_menu ....... 8

5.3 Autoload .. 9

5.4

Working(0) ........................... 9

5.5 Working(1) . 9

5.6 Working(2) .......... 9

5.7 Working(3) ..... 9

5.8 Working(4) ..... 10

5.9 Working(5) ... 10

5.10 Working(6) ....... 10

5.11 Working(7) ..... 10

5.12

Working(_) ......................... 10

5.13 Correct(1) .... 10

5.14 Correct(2). 11

5.15 View .................. 11

5.16 Accept ............. 11

5.17 Skip Skip1 ....... 11

5.18 Bd_load ........ 12

5.19 Bd_save ..... 12

5.20 Ask ................ 12

5.21 Mesage ............................. 12

5.22 Error Io_error ................... 12

5.23 Ok ................................. 12

6. ....................... 13

7. ....................... 24

8.

: ................... 25

................................. 28

.......................... 29

Turbo Prolog

v 2.0 ( ). -

-

, -

- . -

.

, - , -

- ..

-

- .

- - -,

.  

- -

-

. -

.

,

: - -

.

-

: , -

-

,

.

--

-

. -

,

.

-

,

, -

. :

, .

, .

, -

- , - ,

- .  

, -

, - , -

- , - . -

-

.

,

main_menu. -

,

.

:

0 - ... -

1 - -

2 - -

3 - -

4 - -

5 - -

6 - -

7 - -

.

╔═══════════════════╗

║ begin ║

║───────────────────║

║ ║

╚═════════╦═════════╝

╔════════════════╩═══════════════╗

╔═══════╩═════════╗ ╔══════╩═══════╗

║ autoload ║ ║ main_manu ║

║─────────────────║ ║──────────────║

║ ║ ║ ║

╚═════════════════╝ ╚══════╦═══════╝

╔════════╦════════╦════════╦═══════╦══════╬═══════╗

║ ║ ║ ║ ║ ║ ║

╔═══╩══════╗ ║ ╔══════╩══════╗ ║ ╔═════╩════╗ ║ ╔═════╩════╗

║working(0)║ ║ ║ working(1) ║ ║ ║working(2)║ ║ ║working(3)║

║──────────║ ║ ║─────────────║ ║ ║──────────║ ║ ║──────────║

║║ ║ ║║ ║ ║ ║ ║ ║ ║

║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║

╚══════════╝ ║ ╚══════╦══════╝ ║ ╚═════╦════╝ ║ ╚═════╦════╝

╔═════════════╣ ╔╝ ║ ╚╗ ║ ╚═════╗

║ ║ ║ ║ ║ ╚═╗ ║

║ ╔═════╩═════╗ ║ ╔══════╩══════╗ ║ ╔═════╩════╗ ║

║ ║ working(4)║ ║ ║ working(5) ║ ║ ║working(6)║ ║

║ ║───────────║ ║ ║─────────────║ ║ ║──────────║ ║

║ ║ ║ ║ ║ ║ ║ ║ ║ ║

║ ║ ║ ║ ║ ║ ║ ║ ║ ║

║ ╚═════╦═════╝ ║ ╚══════╦══════╝ ║ ╚══════════╝ ║

║ ║ ║ ╚══════╗ ║ ║

║ ╚╗ ╠═══════╦══════╗ ║ ╚═══════════╗ ║

║ ╔══════════╗ ║ ║ ║ ║ ╚═════╗ ║ ║

║ ║working(7)║ ║ ╔════╩═════╗ ║ ╔════╩═════╗ ║ ╔═════╩═════╗ ║

╠═╣──────────║ ║ ║correct(1)║ ║ ║correct(2)║ ║ ║ accept(N) ║ ║

║ ║ 䠠 ║ ║ ║──────────║ ║ ║──────────║ ║ ║───────────║ ║

║ ╚══════════╝ ║ ║ ║ ║ ║ ║ ║ ║║ ║

║ ╔══════════╗ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║

║ ║working(_)║ ║ ╚══════════╝ ║ ╚══════════╝ ║ ║ ║ ║

╚═╣──────────║ ║ ╔═══════╩════════╗ ║ ╚═══════════╝ ║

║ ║ ║ ║ correct(_) ║ ║ ║

║ ║ ║ ║────────────────║ ║ ║

╚══════════╝ ║ ║ ║ ║ ╔═══╝

║ ║ ║ ║ ║

║ ╚════════════════╝ ║ ║

║ ║ ║

║ ║ ║

(1) (2) (3)

(1) (2) (3)

║ ║ ║

║ ║ ╚══╗

║ ╚═══════════╗ ║

╔═══════╩═══════╦════════════╦══════════════╗ ║ ║

╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║ ║

║ load_bd(1) ║ ║ load_bd(2)║ ║ load_bd(3) ║ ║load_bd(4)║ ║ ║

║────────────║ ║───────────║ ║────────────║ ║──────────║ ║ ║

║ ║ ║ ║ ║ ║ ║ ║ ║ ║

║ ║ ║ ║ ║ Ġ ║ ║ ║ ║ ║

║ ║ ║ ║ ║ ║ ║ ║ ║ ║

║║ ║ bit.dat ║ ║║ ║ bstud.dat║ ║ ║

╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║ ║

║ ║

╔═══════════════╦════════════╦══════════════╦══════╝ ║

╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║

║ save_bd(1) ║ ║ save_bd(2)║ ║ save_bd(3) ║ ║save_bd(4)║ ║

║────────────║ ║───────────║ ║────────────║ ║──────────║ ║

║ ║ ║ ║ ║ ║ ║║ ║

║ ║ ║ ║ ║ Ġ ║ ║ ║ ║

║ 堠 ║ ║ ║ ║ 堠 ║ ║ ║ ║

║║ ║ bit.dat ║ ║║ ║ bstud.dat║ ║

╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║

╔═══════════════════╦═══════════════════╦═════════╝

╔══════╩══════╗ ╔══════╩══════╗ ╔══════╩══════╗

║ view(1) ║ ║ view(2) ║ ║ view(_) ║

║─────────────║ ║─────────────║ ║─────────────║

║ ║ ║ ║ ║ 䠠 ║

║ ║ ║ Ġ ║ ║ ║

╚═════════════╝ ╚═════════════╝ ╚═════════════╝

, -

.

Begin GOAL -

. -

Autoload, -

Main_menu.

-

, -

C. -

Working, C -

. Repeat,

Working , C 7

.

Autoload -

.

,

"".

Autoload bit.dat -

existfile

consult.  

.

, -

.

Working(1) -

, , . -

: "-

", " " " ".

.

X,

Correct, X. Ѡ

Correct(1) Correct(2), , -

.   Working(1)

Repeat, -

.

. -

, ,

. Accept,

. Accept -

retract

.   ( ,

)

( Error).

Working(3) , : "-

", " BSTUD" " -

". Ġ

View(1) View(2), . Working(3) -

Main_menu Working(1)

Repeat.

, :

" ", " -

bit.dat", " BSTUD

"," BSTUD bstud.dat" "

". -

Load_bd, C, -

. Working(4) Repeat.

Working(5) Working(4).

Save_bd, , -

I.

. -

: , "-

" , ,

assertz -

"". , -

, fail. Ġ -

,

.

,

.

Main_menu, C=7,

.

Working(_) -

, 0 7.

, -

sound.

.

.

-

, . -

Accept, ,

" ". Accept -

N, -

. -

; -

- , <Enter>.

, , .

-

<Enter>.

Skip ( ) Skip1 ( -

). -

, <Enter>

Correct(1) , ,

Skip1 str_int -

. -

retract, assertz.

, -

( Mesage).

Correct(2) .

,

. assertz

, Ask,

.

, Repeat

, -

( Mesage) -

Correct(2).

-

( View(1) ) ( View(2) ) . -

, -

. Ġ

fail. -

.

Correct(1) Working(2). -

Acp -

,

( , -

Accept) .

Skip Skip1 -

Correct(1). ,

( -

<Enter>). , -

. , -

. -

, ( Skip1

-

).

-

, :

Bd_load(1) , -

, Bd_load(2) - bit.dat, Bd_load(3) - BSTUD

, BD_load(4) - BSTUD -

bstud.dat.

existfile -

consult. , -

( Io_error).

-

, :

Bd_save(1) , ,

Bd_save(2) - bit.dat, Bd_save(3) - BSTUD ,

BD_save(4) - BSTUD ⠠

bstud.dat. Ġ

save. -

( Error).

Ask 頠 ꠠ

Correct(2). , -

.

.

.

.

domains

Str=string

Int=integer

=(Str,Str,Str)

=(Int,Int,Int)

database -

(Int,,Int,Int),

database -

(Int,,Str,Int,)

predicates

begin

main_menu

autoload

accept(Int)

acp(Int,Int)

working(Int)

correct(Int)

view(Int)

skip(Str,Str,Str)

skip1(Str,Int,Int)

ask

mesage

error

io_error

ok

save_bd(Int)

load_bd(Int)

repeat

goal

begin.

clauses

/* , .8 */

begin:-

makewindow(1,26,94," ",0,0,25,80),

clearwindow,

autoload,

main_menu.

/* , .8 */

main_menu:-

repeat,

cursor(7,0),

write(" 0 - ... "),nl,

write(" 1 - "),nl,

write(" 2 - "),nl,

write(" 3 - "),nl,

write(" 4 - "),nl,

write(" 5 - "),nl,

write(" 6 - "),nl,

write(" 7 - "),nl,

write(" =>"),

readint(C),

clearwindow,

working(C),

clearwindow,

C = 7,

retractall(_),

removewindow.

/* , .9 */

autoload:-

retractall(_,),

existfile("bit.dat"),

consult("bit.dat",),

cursor(21,30),

write("* *").

autoload:-

makewindow(2,74,79,"",6,18,8,40),

cursor(2,10),

write(" "),

sound(70,294),

removewindow,

!.

/* , .9 */

working(0):-

makewindow(3,27,30," ...",0,0,25,80),

nl,nl,

write(" p-p "),

nl,nl,

write(" ⠠ "),

nl,nl,nl,nl,

write(" 堠 "),

nl,

write(" TURBO-PROLOG v.2.0."),

nl,nl,nl,

write(" p: .."),

nl,nl,

write(" , p.-1-95 () 1996 . "),

nl,

sound(5,220),

cursor(22,26),

write(" "),

readchar(_),

removewindow,!.

/* , .9 */

working(1):-

makewindow(4,26,48,"pp ",0,0,25,80),

sound(5,220),

repeat,

nl,

nl,

cursor(9,0),

write(" 1 - "),nl,

write(" 2 - "),nl,

write(" 3 - " ),nl,

write(" =>"),

readint(X),

clearwindow,

X>0,X<=3,

correct(X),

clearwindow,

X=3,!,

removewindow.

/* , .9 */

working(2):-

makewindow(5,48,107," ",0,0,25,80),

sound(5,220),

nl,

accept(N),

X=N,

(X,(Fm,Nm,Ot),Pl,Ls,(E1,E2,E3)),

retract((X,(Fm,Nm,Ot),Pl,Ls,(E1,E2,E3))),

ok,

!,

removewindow.

working(2):-

error,

removewindow,!.

/* , .9 */

working(3):-

makewindow(6,30,26,"p ",0,0,25,80),

sound(5,220),

repeat,

nl,

nl,

cursor(10,0),

write(" 1 - "),nl,

write(" 2 - BSTUD"),nl,

write(" 3 - " ),nl,

write(" =>"),

readint(X),

clearwindow,

X>0,X<=3,

view(X),

clearwindow,

X=3,!,

removewindow.

/* , .10 */

working(4):-

makewindow(7,62,120,"",5,10,15,60),

sound(5,220),

repeat,

nl,nl,

write("1 - "),nl,

write("2 - bit.dat"),nl,

write("3 - BSTUD "),nl,

write("4 - BSTUD bstud.dat"),nl,

write("5 - "),nl,

write("=>"),

readint(C),

clearwindow,

C>0,C<=5,

load_bd(C),

clearwindow,

C = 5,!,

removewindow.

/* , .10 */

working(5):-

makewindow(8,62,120,"",5,10,15,60),

sound(5,220),

repeat,

nl,nl,

write("1 - "),nl,

write("2 - bit.dat"),nl,

write("3 - BSTUD "),nl,

write("4 - BSTUD bstud.dat"),nl,

write("5 - "),nl,

write("=>"),

readint(I),

clearwindow,

I>0,I<=5,

save_bd(I),

clearwindow,!,

removewindow.

/* , .10 */

working(6):-

makewindow(10,43,120," BSTUD",6,18,8,40),

sound(5,220),

nl,

retractall(_,),

(N,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),

N=N1, Fam1=Fam, Nam1=Nam,

Otch1=Otch, List1=List, Sum=E1+E2+E3,

assertz((N1,(Fam1,Nam1,Otch1),List,Sum)),

fail.

working(6):-

write(" BSTUD ."),

nl,

write(" !"),

nl,nl,

write(" "),

readchar(_),

removewindow,!.

/* , .10 */

working(7):-!.

/* , .10 */

working(_):-

makewindow(16,74,79," ",6,18,8,40),

nl,

write(" 0 7,"),nl,

write(" "),nl,nl,nl,

write(" "),

sound(20,494),

sound(30,392),

readchar(_),

removewindow.

/* , .10 */

correct(1):-

makewindow(4,26,48," ",0,0,25,80),

nl,

accept(N),

X=N,

(X,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),

clearwindow,nl,

write(" : "),write(N),nl,

write(" : "),write(Fam),nl,

write(" : "),write(Nam),nl,

write(" : "),write(Otch),nl,

write("렠 : "),write(Pol),nl,

write(" : "),write(List),nl,nl,

write(" - "),nl,nl,

write(" : "),write(E1),write(" "),

write(" : "),write(E2),write(" "),

write(" : "),write(E3),

nl,nl,nl,

write(" : "),readln(Fam1),

write(" : "),readln(Nam1),

write("  : "),readln(Otch1),

write(" 렠 : "),readln(Pol1),

write(" : "),readln(List1),

write(" - "),nl,

write(" 頠 : "),readln(Ekz1),

write(" 頠 : "),readln(Ekz2),

write(" 頠 : "),readln(Ekz3),nl,

X1=X,

retract((X,(Fam,Nam,Otch),Pol,List,(E1,E2,E3))),

skip(Fam1,Fam,Fam2),

skip(Nam1,Nam,Nam2),

skip(Otch1,Otch,Otch2),

skip(Pol1,Pol,Pol2),

skip1(List1,List,List2),

skip1(Ekz1,E1,E11),

skip1(Ekz2,E2,E22),

skip1(Ekz3,E3,E33),

assertz((X1,(Fam2,Nam2,Otch2),Pol2,List2,(E11,E22,E33))),

!,

mesage,

removewindow.

/* , .11 */

correct(2):-

makewindow(9,26,48," ",0,0,25,80),

repeat,

nl,

write(" : "),readint(K),nl,

write(" : "),readln(F),nl,

write(" : "),readln(N),nl,

write("  : "),readln(O),nl,

write(" 렠 : "),readln(P),nl,

write(" : "), readint(L),nl,

write(" -"),nl,nl,

write(" 頠 : "),readint(E1),nl,

write(" 頠 : "),readint(E2),nl,

write(" 頠 : "),readint(E3),nl,

N1=K,

Fam=F,Nam=N,Otch=O,

Pol=P,List=L,

Ekz1=E1,Ekz2=E2,Ekz3=E3,

assertz((N1,(Fam,Nam,Otch),Pol,List,(Ekz1,Ekz2,Ekz3))),

ask,!,

mesage,

removewindow.

correct(_).

/* , .11 */

view(1):-

makewindow(16,31,26,"p ",0,0,25,80),

nl,nl,

write("╔═══════════════════════════════════════════════════════╗"),nl,

write("║   ║"),nl,

write("╠════╦═════════════════════╦═══╦═════╦══════════════════╣"),nl,

write("║ ║ Π ║ ║ No ║ ║"),nl,

write("║ No ╠═══════╦════╦════════╣║ .╠═════╦══════╦═════╣"),nl,

write("║ ║║ ║║ ║║1 ║ 2 ║3 ║"),nl,

write("╠════╬═══════╬════╬════════╬═══╬═════╬═════╬══════╬═════╣"),nl,

(N,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),

cursor(Z,_),

cursor(Z,2),write(N),

cursor(Z,5),write("║",Fam),

cursor(Z,18),write("║",Nam),

cursor(Z,30),write("║",Otch),

cursor(Z,43),write("║ ",Pol),

cursor(Z,49),write("║ ",List),

cursor(Z,55),write("║ ",E1),

cursor(Z,62),write("║ ",E2),

cursor(Z,69),write("║ ",E3),

cursor(Z,0),write("║"),

cursor(Z,76),write("║"),

nl,

fail.

view(1):-

write("╚════╩═══════╩════╩════════╩═══╩═════╩═════╩══════╩═════╝"),

nl,

cursor(22,26),

write(" "),

readchar(_),

removewindow.

view(2):-

nl,

makewindow(13,31,26," ",0,0,25,80),

write("╔═══════════════════════════════════════════════════════╗"),nl,

write("║   ║"),nl,

write("╠════╦════════════════════════════════════╦═════╦═══════╣"),nl,

write("║ ║ Π ║ No ║ ║"),nl,

write("║ No ╠════════════╦═══════════╦═══════════╣ .║ ║"),nl,

write("║ ║ ║ ║ ║║ ║"),nl,

write("╠════╬════════════╬═══════════╬═══════════╬═════╬═══════╣"),nl,

(N,(Fam,Nam,Otch),List,Sum),

cursor(Z,_),

cursor(Z,11),write(N),

cursor(Z,14),write("║",Fam),

cursor(Z,27),write("║",Nam),

cursor(Z,39),write("║",Otch),

cursor(Z,52),write("║ ",List),

cursor(Z,58),write("║ ",Sum),

cursor(Z,9),write("║"),

cursor(Z,66),write("║"),

nl,

fail.

view(2):-

write("╚════╩════════════╩═══════════╩═══════════╩═════╩═══════╝"),

nl,

cursor(22,26),

write(" "),

readchar(_),

removewindow.

view(_).

/* */

/* correct(1) working(2), .11 */

accept(N):-

nl,

cursor(10,0),

write(" 1 - "),nl,

write(" 2 - "),nl,

write(" =>"),

readint(X),

acp(X,N).

acp(1,N):-

nl,

write(" : "),nl,

write(" >"),

readint(N),

(P,_,_,_,_),

P=N.

acp(1,N):-

N=0.

acp(2,N):-

nl,

write(" : "),nl,

write(" >"),

readln(L),

(Y,(L,_,_),_,_,_),

N=Y.

acp(2,N):-

N=0.

/* correct(1), .11 */

skip("",Fam,Fam2):-

Fam2=Fam,

!.

skip(Fam1,_,Fam2):-

Fam2=Fam1,

!.

skip1("",Fam,Fam2):-

Fam2=Fam,

!.

skip1(Fam1,_,Fam2):-

str_int(Fam1,Fam3),

Fam2=Fam3,

!.

/* , .12 */

load_bd(1):-

retractall(_,),nl,nl,

write(" :"),

readln(N),

existfile(N),

consult(N,),

ok,

!.

load_bd(1):-

io_error,

!.

load_bd(2):-

retractall(_,),

existfile("bit.dat"),

consult("bit.dat",),

ok,

!.

load_bd(2):-

io_error,

!.

load_bd(3):-

retractall(_,),nl,nl,

write(" :"),

readln(N),

existfile(N),

consult(N,),

ok,

!.

load_bd(3):-

io_error,

!.

load_bd(4):-

retractall(_,),

existfile("bstud.dat"),

consult("bstud.dat",),

ok,

!.

load_bd(4):-

io_error,

!.

load_bd(_).

/* , .12 */

save_bd(1):-

nl,nl,

write(" : "),

readln(N),

save(N,),nl,

ok,

!.

save_bd(1):-

error.

save_bd(2):-

save("bit.dat",),

ok,

!.

save_bd(2):-

error.

save_bd(3):-

nl,nl,

write(" : "),

readln(N),

save(N,),nl,

ok,

!.

save_bd(3):-

error.

save_bd(4):-

save("bstud.dat",),

ok,

!.

save_bd(4):-

error.

save_bd(_).

/* correct(2), .12 */

ask:-

makewindow(10,43,120,"",6,18,8,40),nl,nl,

write(" ? "),nl,nl,

write(" []/[]"),

readchar(Ch),

removewindow,

clearwindow,

Ch='',!.

/* , .12 */

mesage:-

makewindow(17,74,79,"",6,18,8,40),nl,

write(" "),nl,

write(" !"),nl,nl,

write(" "),

readchar(Ch),

removewindow.

/* , .12 */

error:-

makewindow(15,74,79,"",6,18,8,40),

cursor(2,16),

write(""),nl,nl,

write(" "),

sound(70,294),

readchar(_),

removewindow,

!.

io_error:-

makewindow(16,74,79,"",6,18,8,40),

cursor(2,7),

write(" "),nl,nl,

write(" "),

sound(70,294),

readchar(_),

removewindow.

/* */

/* , .12 */

ok:-

makewindow(17,27,90,"",6,18,8,40),

cursor(2,7),

write(" "),nl,nl,

write(" "),

readchar(_),

removewindow.

/* repeat */

repeat.

repeat:- repeat.

.

-

.

, -

predicates .. ,

, -

-

. , -

. -

fail.

. ,

- . :

Working(4)

" ", "" (.. -

""). ,

Repeat ( -

,

makewindow), -

"" . -

.

.

" " -

- . -

,

. ,

, ,

.

, -

.

:

0 - ...

1 -

2 -

3 -

4 -

5 -

6 -

7 -

- -

. -

.

, -

.

.

.

.

:

1 -

2 -

3 -

1 .

:

1 -

2 -

,

1, - 2.

.

( ) -

. -

, .

,

<Enter>. -

-

" ".

2 " " -

. -

.

,

. (

)

, .

( (.) -

)

-

" ".

3 .

.

" " " -

" ,

.

, -

. -

( ),

.

-

. -

:

1 -

2 - BSTUD

3 -

1 ,

(

bit.dat) - -

. , -

. -

.

2

BSTUD. ,

6

4 . -

.

3 .

-

. :

1 -

2 - bit.dat

3 - BSTUD

4 - BSTUD bstud.dat

5 -

2 4 -

Ġ bit.dat

bstud.dat, -

.

.

1 3 , -

. -

,

.

5 .

.

:

1 -

2 - bit.dat

3 - BSTUD

4 - BSTUD bstud.dat

5 -

-

" ".

-

. -

,

. -

.

-

- .

. -

. ,

, , .

.

--

. ,

-

.

. "

"

. " - "

. " -

. 2.3"

___

1. : - . 2. : - , - Bit : &#9556

 

 

 

! , , , .
. , :