#include <iostream>
using namespace std;
class FiniteField
{
int mPrime, mD;
public:
FiniteField(int ip = 0, int id = 0)
:mPrime(ip), mD(id)
{
}
void Show()
{
cout << mD<< endl;
}
friend istream& operator>>(istream&, const FiniteField&);
FiniteField operator +(const FiniteField& ff)
{
return FiniteField(mPrime, (mD + ff.mD) % mPrime);
}
FiniteField operator *(const FiniteField& ff)
{
return FiniteField(mPrime, (mD * ff.mD) % mPrime);
}
FiniteField operator -(const FiniteField& ff)
{
return FiniteField(mPrime, (mD + (mPrime - ff.mD)) % mPrime);
}
FiniteField operator /(const FiniteField& ff)
{
int k = 1;
for (; k < mPrime; ++k){
if ((k*ff.mD) % mPrime == 1)
break;
}
return FiniteField(mPrime, (mD * k) % mPrime);
}
};
istream& operator>>(istream& in, const FiniteField& ff)
{
return cin >> ff.mD;
}
//StudybarCommentBegin
int main()
{
int prime, a, b;
char opt;
//while(1){ //for test in my computer
cin >> prime; //input a prime num
cin >> a >> opt >> b; // input like a+b;
FiniteField f1(prime, a), f2(prime, b), f3; ////Show How to define constructor
switch (opt){
case '+':f3 = f1 + f2; break;
case '-':f3 = f1 - f2; break;
case '*':f3 = f1*f2; break;
case '/':f3 = f1 / f2; break;
}
f3.Show();
// } // end while
}
//StudybarCommentEnd