{Teste OK}
programa ricardo;

var a,b,c,x: inteiro;

                   {proc 1}
          procedimento analisa1;
          var x: inteiro;
          z: booleano;

                      procedimento analisa2;
                      inicio
                         leia(a);
                         b:=1;
                         b:= a*a+(c div b);
                         escreva(b) 
                     fim;

			funcao func1: inteiro;
                     inicio
                        analisa2;
                        func1:= +a-(-b);
                     fim;

           inicio
           leia(x);
           z:= falso;
           se (x>1) ou (+x*(-100) >(-func1) ) e (nao z){ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou 
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)ou
		       (+x*(-100) >(-func1) ) e (nao z)ou (+x*(-100) >(-func1) ) e (nao z)}
          entao
          inicio      
               x:= func1;
               z:= falso;
               escreva(x);
          fim;
          enquanto nao nao nao nao nao ( (-a*(-b) = 1064) ou (a<= (-1000)) ou z)  {condicao de parada}
          faca
          inicio
               a:= x+b;
               z:= falso ou nao falso
          fim;
          escreva(a)
fim;

inicio
inicio
    leia(c);
    analisa1;
    se b > (c+ a*a)
    entao escreva(b)
    senao escreva(c)
fim
fim.
