const MaxN = 1000; { maximální počet sloupečků } var M, N : integer; { počet požadavků a sloupečků } pred, next : array [0..MaxN] of integer; { předchůdci a následníci sloupečků ve frontě } p, s : integer; { právě zpracovávaný požadavek a sloupeček } begin read(N, M); pred[0] := 0; next[0] := 0; { nula je sama sobě předchůdcem i následníkem } for s := 1 to N do pred[s] := -1; { ostatní sloupečky jsme ještě neviděli } for p := 1 to M do begin read(s); { další požadavek } if pred[s] >= 0 then begin { pokud už jsme ho viděli, pryč s ním z fronty } next[pred[s]] := next[s]; pred[next[s]] := pred[s]; end; next[s] := 0; pred[s] := pred[0]; { a každopádně přidat na konec fronty } next[pred[0]] := s; pred[0] := s; end; s := next[0]; { vypíšeme koncový stav fronty } while s <> 0 do begin writeln(s); s := next[s]; end; end.