Kineska teorema

Meni nije jasno da li treba u zadatku Kineska teorema ispisati najmanji ili najveci X,a nije mi jasno ni zasto ne radi ovaaj kod:
#include <cstdlib.>
#include <iostream.>
#include <math.h>
using namespace std;

int main()
{
long long n1,a1,n2,a2,n3,a3,i=1;
cin>>a1>>n1>>a2>>n2>>a3>>n3;
while(((n3i+a3)%n1!=a1||(n3i+a3)%n2!=a2||(n3i+a3)%n3!=a3)&&n1n2n3<(n3i+a3))
{
i++;
if(((n3i+a3)%n1==a1||(n3i+a3)%n2==a2||(n3i+a3)%n3==a3)&&n1n2n3<(n3i+a3))
{
break;
}
}
cout<<(n3*i+a3)<<endl;
return 0;
}

S tim sto naravno nisam stavljao tacke kod datoteka nego sam ih stavio da bi se videlo koje su datoteke u pitanju