Program Problem1;

var
   ADoc,BDoc:text;
   BigLoop,LargeLoop,N:Integer;
   Flag1:Boolean;

Function PrimeCheck(Z:Integer):Boolean;
      var
         Loop:Integer;
         Flag:Boolean;
      Begin
      Flag:=True;
      Loop:=1;
      While (Flag=True) and (Loop<=z div 2) do
         Begin
         Loop:=Loop+1;
         If Z mod Loop = 0 then
            Flag:=False;
         if Z=2 then
            Flag:=true;
         if z=1 then
            Flag:=false;
         End;
      PrimeCheck:=Flag;
      End;

Begin

   Assign(ADoc,'DATA1.txt');
   Assign(BDoc,'OUT1.txt');

   Reset(ADoc);
   Rewrite(BDoc);

   for BigLoop:=1 to 5 do
      Begin
      Readln(ADoc,N);
      Flag1:=False;
      For LargeLoop:=2 to N div 2 do
         if N mod LargeLoop=0 then
            if (PrimeCheck(N div LargeLoop)=True) and (PrimeCheck(LargeLoop)=True) then
               Flag1:=True;
      If Flag1=True then
         writeln(BDoc,'semiprime')
      Else
         Writeln(BDoc,'not');
      End;

   Close(BDoc);
End.





