program twide8;

procedure Check(const aStr: UnicodeString; aIndex: LongInt);
const
  Char1 = #$DBFF;
  Char2 = #$DFFF;
begin
  if Length(aStr) <> 2 then
    Halt(aIndex * 3);
  if aStr[1] <> Char1 then
    Halt(aIndex * 3 + 1);
  if aStr[2] <> Char2 then
    Halt(aIndex * 3 + 2);
end;

var
  s: UnicodeString;
begin
  s := #$10FFFF;
  Check(s, 1);
  s := #1114111;
  Check(s, 2);
  s := #&4177777;
  Check(s, 3);
  s := #%100001111111111111111;
  Check(s, 4);
  Writeln('ok');
end.