var
 _in : file of char;
 _out : text;
 a,apr : char;
 name: string;
 big : Boolean;
begin
 WriteLn('Введите имя файла с текстом. Расширение файла (.txt) вводить не надо');
 ReadLn(name);
 name:=name+'.txt';
 Assign(_in,name);
 Assign(_out,'out.txt');
 Reset(_in);
 ReWrite(_out);
 big:=TRUE;
 while not EOF(_in) do
  begin
   Read(_in,a);
    case a of
     '.','!','?' : big:=TRUE; end;
    if a=' ' then begin apr:=a; Read(_in,a); case a of
                                      ' ' : begin Seek(_in,FilePos(_in)-1); continue; end;
                                      '.','!','?' : big:=TRUE;
                                      '0'..'9','A'..'Z','a'..'z','А'..'П','Р'..'Я','а'..'п','р'..'я' :
                                        begin Write(_out,' '); Seek(_in,FilePos(_in)-1); continue; end; end; end;

   case apr of
     ',',':',';': case a of
                   '0'..'9','A'..'Z','a'..'z','А'..'П','Р'..'Я','а'..'п','р'..'я':
                     begin Write(_out,' ',a); apr:=a; continue; end;
                 end;
     'A'..'Z', 'a'..'z','А'..'П','а'..'п','Р'..'Я','р'..'я':
       case a of
        'A'..'Z','А'..'П': a:=chr(Ord(a)+32);
        'Р'..'Я': a:=chr(Ord(a)+80);
       end;
     '.','?','!': case a of
                   '0'..'9','A'..'Z','a'..'z','А'..'П','Р'..'Я','а'..'п','р'..'я':
                     begin Write(_out,' '); big:=TRUE; end;
                   ' ' : big:=TRUE;
                 end;
    end;
   if big=TRUE then
    case a of
      'a'..'z', 'а'..'п' : begin a:=chr(Ord(a)-32); big:=FALSE; end;
      'р'..'я' : begin a:=chr(Ord(a)-80); big:=FALSE; end;
      '0'..'9','A'..'Z','А'..'П','Р'..'Я' : big:=FALSE;
    end;
   Write(_out,a);
   apr:=a;
  end;
 Close(_in);
 Close(_out);
 WriteLn('Готово!');
 ReadLn;
end.