program trys_vienodi_skaitmenys;
  { 130 u‘davinys }
   type  vienodi = array [1..2] of  { dviems rastiems skai‡iams saugoti }
                     record { skai‡iaus pagrindas ir skaitmuo }
                       pagr, sk: integer
                     end;

  procedure ivesti (var m, n: integer);
  { Ťvedami pradiniai duomenys }
    var f: text;
  begin
    assign (f, 'VIENODI.DAT');
    reset (f);
    read (f, m, n);
    close (f);
  end; { Ťvesti }

  procedure isvesti (s: integer; v: vienodi; var f: text);
  { ižveda Ť byl… rast… skai‡i— }
  begin
    writeln (f, s);
    writeln (f, v[1].pagr,' ',v[1].sk,' ',v[1].sk,' ',v[1].sk);
    writeln (f, v[2].pagr,' ',v[2].sk,' ',v[2].sk,' ',v[2].sk);
  end; { ižvesti }

  procedure ieskoti_vienodu (m, n: integer; var f: text);
  { randa iežkomus skai‡ius iž intervalo [n, m] ir juos }
  { Ťražo Ť byl… f }
    var s, tiriu, kiek, skaitmuo, p, dvi: integer;
        v: vienodi;
  begin
    rewrite (f);
    for s := m to n do  { tirsime visus skai‡ius iž duoto intervalo }
      begin
        p := 2;  { pradedama nuo ma‘iausio sistemos pagrindo }
        dvi := 0;        { kol kas nerasta n‚ vienos sistemos }
        repeat           { tiriam… skai‡i— u‘ražysime Ťvairiomis sistemomis }
          tiriu := s;
          skaitmuo := tiriu mod p;
          kiek := 1; { keliais skaitmenimis sistemoje p u‘siražo skai‡ius s }
          tiriu := tiriu div p;
          while (tiriu <> 0) and        { ar visi trys skaitmenys vienodi }
                (kiek < 3) and (tiriu mod p = skaitmuo) do
             begin
               kiek := kiek + 1;
               tiriu := tiriu div p
             end;
          if (kiek = 3) and (tiriu = 0)  { jei trys skaitmenys vienodi }
             then begin
                    dvi := dvi + 1;   { jau rastas u‘ražas viena sistema }
                    v[dvi].pagr := p;
                    v[dvi].sk := skaitmuo
                  end;
           p := p + 1
       { tiriame tol, kol randame dvi sistemas }
        until (dvi = 2) or (p > s);
        if dvi = 2 then isvesti (s, v, f)
      end;
    close (f);
  end; { iežkoti_vienod— }

  var m, n: integer;
      f: text;
begin
  ivesti (m, n);
  { paruožiame byl… ižvedimui }
  assign (f, 'VIENODI.REZ');
  ieskoti_vienodu (m, n, f);
end.

