program ideone;
var
	b: Byte;
	i: Integer;
	serialn: String;
	ProductId: String;
	IdentCode: String;
	LicenseKey: String;
	HoldRegs: Array [1..19] of Byte = (0,$DF,32,$E8,83,$97,$B2,3,0,96,$9F,$9F,33,38,64,53,0,0,1);
begin
	IdentCode := '';
	LicenseKey := '';
	serialn := 'PNSCALKIFABJKMBJL4' + Chr(0) + Chr(0);
	ProductId := 'MODPN2XV94501MB02';

	
	for i := 1 to Length(ProductId) do
	begin
		b := Ord(serialn[i]) xor Ord(ProductId[i]);
		b := (b mod 13) + 65;
		IdentCode := IdentCode + Chr(b);
	end;
	IdentCode := IdentCode + Chr($32);
	

	for i := 1 to 17 do
	begin
		b := Ord(IdentCode[i]) xor HoldRegs[i] xor i;
		b := (b mod 26) + 65;
		LicenseKey := LicenseKey + Chr(b);
	end;
	LicenseKey := LicenseKey + Chr($0);


	Writeln('IDENT CODE: ' + IdentCode);
	Writeln('LICENSE KEYE: ' + LicenseKey);
end.