//PascalABC.NET версия 3.4.0.1677 от 17.06.18
//Если программа не запускается, то обновите версию
uses System.Linq;
function GetPrimes(n: integer): List<integer>;
begin
var primes := new List<integer>();
primes.Add(2);
for var i := 3 to n do
begin
if primes.All(x -> i mod x > 0 ) then
primes.Add(i);
end;
GetPrimes := primes;
end;
begin
var n := ReadInteger('n =');
var primes := GetPrimes(2 * n);
foreach var p in primes do
if primes.Contains(p + 2) then
writeln(p, ' ', p + 2);
end.
Петя не может быть правым в обоих случаях так как получиться что и петя и женя написали на 5, а тк не может быть по условию. дальше подбираем под петю два оставшихся случая, при том что петя сказал 2 раза правду, но этого не может быть т.к. тогда женя говорит либо 2 неправды либо 50на50, говоря две неправды он противоречит пете о том что он не писал на 5 а говоря правду неправду противоречит и пете и саше. значит петя определенно сказал правду неправду, тогда подставив жене неправду а саше правду получаем что на 5 написал петя.