#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int>& A, vector<int>& B) // 高精度加法
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || i < B.size(); i ++ )
{
if (i < A.size()) t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if (t) C.push_back(1);
return C;
}
bool cmp(vector<int>& A, vector<int>& B) // 判断A >= B
{
if (A.size() != B.size()) return A.size() > B.size();
for (int i = A.size() - 1; i >= 0; i -- )
if (A[i] != B[i])
return A[i] > B[i];
return true;
}
vector<int> sub(vector<int>& A, vector<int>& B) // 高精度减法
{
vector<int> C;
int t = 0;
for (int i = 0; i < A.size(); i ++ )
{
t = A[i] - t;
if (i < B.size()) t -= B[i];
C.push_back((t + 10) % 10);
if (t < 0) t = 1;
else t = 0;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
vector<int> mul(vector<int>& A, vector<int>& B) // 高精度乘法
{
vector<int> C(A.size() + B.size(), 0);
for (int i = 0; i < A.size(); i ++ )
for (int j = 0; j < B.size(); j ++ )
C[i + j] += A[i] * B[j];
int t = 0;
for (int i = 0; i < C.size(); i ++ )
{
t += C[i];
C[i] = t % 10;
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
void print(vector<int>& C) // 因为要多次输出,所以封装成函数
{
for (int i = C.size() - 1; i >= 0; i -- ) printf("%d", C[i]);
puts("");
C.clear();
}
int main()
{
string a, b;
cin >> a >> b;
vector<int> A, B;
for (int i = a.size() - 1; i >= 0; i -- )
if (a[i] != '-')
A.push_back(a[i] - '0');
for (int i = b.size() - 1; i >= 0; i -- )
if (b[i] != '-')
B.push_back(b[i] - '0');
vector<int> C;
if (a[0] != '-' && b[0] != '-') // a + b, a - b, a * b
{
C = add(A, B);
print(C);
if (cmp(A, B)) C = sub(A, B);
else
{
C = sub(B, A);
printf("-");
}
print(C);
C = mul(A, B);
print(C);
}
else if (a[0] == '-' && b[0] == '-') // (-a) + (-b), (-a) - (-b), (-a) * (-b)
{
C = add(A, B);
printf("-");
print(C);
if (cmp(A, B))
{
printf("-");
C = sub(A, B);
print(C);
}
else
{
C = sub(B, A);
print(C);
}
C = mul(A, B);
print(C);
}
else if (a[0] == '-' && b[0] != '-') // (-a) + b, (-a) - b, (-a) * b
{
if (cmp(A, B))
{
C = sub(A, B);
printf("-");
}
else C = sub(B, A);
print(C);
printf("-");
C = add(A, B);
print(C);
printf("-");
C = mul(A, B);
print(C);
}
else if (a[0] != '0' && b[0] == '-') // a + (-b), a - (-b), a * (-b)
{
if (cmp(A, B)) C = sub(A, B);
else
{
C = sub(B, A);
printf("-");
}
print(C);
C = add(A, B);
print(C);
printf("-");
C = mul(A, B);
print(C);
}
return 0;
}