#include <vector>

using namespace std;
class Biginteger
{
	std::vector<int> digits;
public:
	Biginteger();
	Biginteger(vector<int> value);
	Biginteger(int value);
	void setValue(vector<int> value);
	void setValue(int value);
	void setSize(int size);
	void push_back(int number);
	static void carryAddMul(int position, Biginteger& digits2);
	static void carrySub(int position, Biginteger& digits2);
	static Biginteger multiplicate(Biginteger firstfactor, Biginteger secondfactor);
	static Biginteger substracte(Biginteger minuend, Biginteger subtrahent);
	static Biginteger add(Biginteger firstsummand, Biginteger secondsummand);
	static Biginteger factorial(Biginteger number);
	vector<int> getValue();
	int getSize();
	int at(int position);
	bool equalsone();
	int& operator[](int number);
	Biginteger operator=(Biginteger number);
	Biginteger operator=(vector<int> number);
	Biginteger operator=(int number);
	Biginteger operator+=(const Biginteger& summand);
};
Biginteger operator+ (const Biginteger& firstsummand, const Biginteger& secondsummand);
Biginteger operator*(const Biginteger& firstfactor, const Biginteger& secondfactor);