{ 143 u‘davinys }
function diskas (n, s, m: integer): integer;
                { n - skai‡ius disko viržuje }
                { s - sukaupta suma }
                { m - galutin‚ suma }
  var krit: array [1..6] of set of 1..21;
          { kritin‚s situacijos, apsprend‘ian‡ios laim‚jim…  }
          { norint laim‚ti prie ži— situacij—, b–tina disk… }
          { sukti Ť kairŠ }
      ka, { koks skai‡ius bus viržuje disk… pasukus Ť kairŠ  }
      de, { koks skai‡ius bus viržuje disk… pasukus Ť dežinŠ }
      liko: integer; { kiek dar liko iki sutarto skai‡iaus  }
begin
  { apskai‡iuojame kritines situacijas }
  krit[1] := [2];
  krit[2] := [3, 10, 17];
  krit[3] := [4, 5, 6, 13];
  krit[4] := [5, 7, 8, 12, 16];
  krit[5] := [9, 16];
  krit[6] := [1, 2, 4, 9, 11, 14, 17, 18, 21];
  { rasime skai‡ius, kurie atsiras disko viržuje pasukus disk… }
  if n = 6 then ka := 1
           else ka := n + 1;
  if n = 1 then de := 6
           else de := n - 1;
  liko := m-s;
  if liko > 21
    then diskas := ka
    else if liko in krit[n]
      then diskas := ka
      else diskas := de
end; { diskas }

