#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<math.h>
#include<queue>
#include<set>
#include<map>
#include<list>

using namespace std;


int main() {
	int a, b, c;
	cin >> a >> b;
	int x = a * b;
	if (x % 2 == 1) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}

	return 0;
}


/*
int main() {
	int x1, y1, x2, y2;
	cin >> x1 >> x2 >> y1 >> y2;

	int X = y1 - y2;
	int Y = x1 - x2;
	if (x1 > x2) {
		int X = y1 - y2;
		int Y = x1 - x2;
	}
	else {
		int X = - y1 + y2;
		int Y = - x1 + x2;
	}

	cout << x2 + X << " " << y2 + Y << " " << x1 + X << " " << y1 + Y << endl;
	*/

	/*
	int k;
	cin >> k;
	int g = k / 2;
	int h = (k + 1) / 2;

	cout << g*h << endl;
	*/

//	return 0;
	
//}

/*
int main() {
	int N, M, Q;
	list<int> list;
	int Ans[200000];
	cin >> N >> M >> Q;
	for (int i = 0; i < N; i++) {
		list.push_back(i);
		Ans[i] = 1;
	}

	auto itr = list.begin();
	for (int i = 0; i < M; i++) {
		int a;
		cin >> a;
		if (a % 2 == 0) {
			for (int j = 0; j < a; j++) {
				itr++;
				if (itr == list.end())
					itr = list.begin();
			}
		}
		else {	
			for (int j = 0; j < a; j++) {
				if (itr == list.begin())
					itr = list.end();

				itr--;
			}
		}
		Ans[*itr] = 0;
		itr = list.erase(itr);
		if (itr == list.end()) itr = list.begin();
	}

	for (int i = 0; i < Q; i++) {
		int q;
		cin >> q;
		cout << Ans[q] << endl;
	}

	return 0;
}
*/

/*
int N, C;
int X[2][100000] = {};

int main() {
	cin >> N >> C;
	for (int i = 0; i < N; i++) {
		X[0][i] = i;
	}

	for (int i = 0; i < C; i++) {
		int type;
		cin >> type;
		if (type == 0) {
			int t, p;
			cin >> t >> p;
			t--;
			for (int j = 0; j < N; j++) {
				if (X[0][j] == t) {
					X[1][j] += p;
				}
			}
			
		}
		if (type == 1) {
			int m;
			cin >> m;
			m--;

			cout << X[0][m] << " " << X[1][m] << endl;
		}
	}

	return 0;
}
*/

/*
string t, b;
int t_size, b_size;
int dp[1000][1000];

int solve(int now, int m) {
	if (now == t_size) return 0;
	if (dp[now][m] != -1) return dp[now][m]% 1000000007;
	dp[now][m] = solve(now + 1, m);
	if (t[now] == b[m]) {
		if (m == b_size - 1) dp[now][m] += 1;
		else dp[now][m] += solve(now + 1, m + 1);
	}
	return dp[now][m]%1000000007;
}

int main() {
	cin >> t >> b;
	t_size = t.size();
	b_size = b.size();
	for (int i = 0; i < t_size; i++) {
		for (int j = 0; j < b_size; j++) {
			dp[i][j] = -1;
		}
	}

	cout << solve(0, 0) << endl;

	return 0;
}
*/

/*
int N;
int p[6000] = {};
int a[6000] = {};

void solve(int n) {
	if (n == N) {
		return;
	}
	for (int i = a[n+1]; i < p[n+1]; i++) {
		a[n]++;
		a[n + 1]++;
	}
	return solve(n+1);
}

int main() {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> p[i];
	}

	solve(0);

	int ans = 0;
	for (int i = 0; i < N; i++) {
		ans += a[i];
	}

	cout << ans << endl;

	return 0;
}
*/

//部活動調査
/*
int N, M, K;
int belong[100000];
vector<int> friends[100000];
queue<int> que;

bool solve(int n) {
	for (int i = 0; i < friends[n].size(); i++) {
		int tmp = friends[n][i];
		if (belong[tmp] == belong[n]) {

		}
		else if (belong[tmp] == -1) {
			belong[tmp] = belong[n];
			que.push(tmp);
		}
		else{
			return false;
		}
	}
	return true;
}

bool cont = true;

int main() {
	cin >> N >> M >> K;

	for (int i = 0; i < N; i++) {
		belong[i] = -1;
	}

	for (int i = 0; i < K; i++) {
		int type;
		cin >> type;

		if (type == 1) {
			int a, b;
			cin >> a >> b;
			if (cont == false) continue;
			a--;
			b--;
			if (belong[a] != -1) {
				if (belong[b] == belong[a]) {

				}
				else if (belong[b] == -1) {
					belong[b] = belong[a];
					que.push(b);
				}
				else {
					cout << i + 1 << endl;
					cont = false;
					continue;
				}
			}
			if (belong[b] != -1) {
				if (belong[b] == belong[a]) {

				}
				else if (belong[a] == -1) {
					belong[a] = belong[b];
					que.push(a);
				}
				else {
					cout << i + 1 << endl;
					cont = false;
					continue;
				}
			}
			friends[a].push_back(b);
			friends[b].push_back(a);

			while (que.size() != 0)
			{
				bool tmp = solve(que.front());
				que.pop();
				if (tmp == false) {
					cout << i + 1 << endl;
					cont = false;
					continue;
				}
			}
		}
		if(type == 2) {
			int c, x;
			cin >> c >> x;
			if (cont == false) continue;
			c--;
			x--;

			if(belong[c] == x){
			
			}
			else if(belong[c] == -1){
				belong[c] = x;
				que.push(c);
			}
			else {
				cout << i + 1 << endl;
				cont = false;
				continue;
			}

			while (que.size() != 0) {
				bool tmp = solve(que.front());
				que.pop();
				if (tmp == false) {
					cout << i + 1 << endl;
					cont = false;
					continue;
				}
			}
		}
	}

	if(cont == true) cout << 0 << endl;

	return 0;
}
*/
//品質管理
/*
int main() {
	int C, N;
	string S[1000];
	bool ok[500][500];
	cin >> C >> N;
	for (int i = 0; i < N; i++) {
		cin >> S[i];
	}

	int ans = 0;
	int wrong = 0;
	vector<pair<int, int>> X;
	for (int i = 0; i < N/2; i++) {
		for (int j = 0; j < N/2; j++) {
			if (!(S[i][j] == S[i][N - j - 1] && S[i][j] == S[N - i - 1][j] && S[i][j] == S[N - i - 1][N - j - 1])) {
				wrong++;
				ok[i][j] = false;
			}
			else {
				ok[i][j] = true;
			}
		}
	}

	if (wrong == 0)
		ans++;

	for (int i = 0; i < C-1; i++) {
		int D;
		cin >> D;
		for (int j = 0; j < D; j++) {
			int r, c;
			cin >> r >> c;
			r--;
			c--;
			if (S[r][c] == '0')
				S[r][c] = '1';
			else if (S[r][c] == '1')
				S[r][c] = '0';

			if (r >= N / 2) r = N - r - 1;
			if (c >= N / 2) c = N - c - 1;

			if (!(S[r][c] == S[r][N - c - 1] && S[r][c] == S[N - r - 1][c] && S[r][c] == S[N - r - 1][N - c - 1])) {
				if (ok[r][c]) {
					ok[r][c] = false;
					wrong++;
				}
			}
			else {
				if (!ok[r][c]) {
					ok[r][c] = true;
					wrong--;
				}
			}
		}
		if (wrong == 0) ans++;
	}

	cout << ans << endl;

	return 0;
}
*/

//プログラミング
/*
int main() {
	int N;
	cin >> N;
	int P[100];
	for (int i = 0; i < N; i++) {
		cin >> P[i];
	}

	int ans = 0;
	for (int i = 1; i <= 100; i++) {
		int tmp = 0;
		for (int j = 0; j < N; j++) {
			if (P[j] >= i) 
				tmp++;
		}
		if (tmp >= i)
			ans = i;
	}

	cout << ans << endl;

	return 0;
}
*/

//極秘調査
/*
int main() {
	int N, X, Y, Z;
	bool A[100], B[100], C[100];
	cin >> N;
	for (int i = 0; i < N; i++) {
		A[i] = false;
		B[i] = false;
		C[i] = false;
	}
	
	cin >> X;
	for (int i = 0; i < X; i++) {
		int tmp;
		cin >> tmp;
		A[tmp-1] = true;
	}

	cin >> Y;
	for (int i = 0; i < Y; i++) {
		int tmp;
		cin >> tmp;
		B[tmp-1] = true;
	}

	cin >> Z;
	for (int i = 0; i < Z; i++) {
		int tmp;
		cin >> tmp;
		C[tmp-1] = true;
	}

	int ans = 0;
	for (int i = 0; i < N; i++) {
		if (A[i] == false && B[i] == false && C[i] == true)
			ans++;
		if (B[i] == true && C[i] == true)
			ans++;
	}

	cout << ans << endl;

	return 0;
}
*/

/*
int n;
int NSize(int X[]) {
	int ans = 0;
	for (int i = 0; i < n; i++) {
		if (X[i] >= 0) {
			ans++;
		}
	}
	return ans;
}

int main() {

	//カードゲーム

	//while (true){
			
		cin >> n;
		//if (n == 0)
			//break;

		int T[100], H[100];
		for (int i = 0; i < n; i++) {
			cin >> T[i];
		}
		sort(T, T + n);

		int k = 0;
		for (int i = 1; i <= 2*n; i++) {
			for (int j = 0; j < n; j++) {
				if (i == T[j]) {
					break;
				}
				else if (j == n - 1) {
					H[k] = i;
					k++;
				}
			}
		}

		int tp = 0,  hp = 0;
		int x = T[0];
		int x_n = 0;
		T[0] = -1;
		bool b = true;
		while (true)
		{
			if (NSize(T) == 0) {
				tp = NSize(H);
				break;
			}
			if (NSize(H) == 0) {
				hp = NSize(T);
				break;
			}

			if (b) {
				for (int i = 0; i < n; i++) {
					if (H[i] > x) {
						x = H[i];
						H[i] = -1;
						x_n = i;
						b = false;
						break;
					}
					else if(i == n-1){
						x_n++;
						x = T[x_n];
						T[x_n] = -1;
					}
				}
			}
			else {
				for (int i = 0; i < n; i++) {
					if (T[i] > x) {
						x = T[i];
						T[i] = -1;
						x_n = i;
						b = true;
						break;
					}
					else if (i == n - 1) {
						x_n++;
						x = H[x_n];
						H[x_n] = -1;
					}
				}
			}
		}

		cout << tp << endl << hp << endl;
	//}

	return 0;
}
*/

	//幹線道路
	/*
	int h, w;
	cin >> h >> w;

	int A[100][100];
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			cin >> A[i][j];
		}
	}

	int ans = 999999;
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			int temp = 0;
			for (int k = 0; k < h; k++) {
				for (int l = 0; l < w; l++) {
					temp += A[k][l] * min(abs(i - k), abs(j - l));
				}
			}
			ans = min(temp, ans);
		}
	}

	cout << ans << endl;

	return 0;
}
*/

	//休憩所
	/*
	int n, m, d;
	cin >> n >> m >> d;

	string S[100];
	for (int i = 0; i < n; i++) {
		cin >> S[i];
	}

	int ans = 0;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m-d+1; j++) {
			bool b = true;
			for (int k = 0; k < d; k++) {
				if (S[i][j + k] == '#') {
					b = false;
				}
			}
			if (b)
				ans++;
		}
	}

	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n-d+1; j++) {
			bool b = true;
			for (int k = 0; k < d; k++) {
				if (S[j+k][i] == '#') {
					b = false;
				}
			}
			if (b)
				ans++;
		}
	}

	cout << ans << endl;

	return 0;
}
*/
	//ロシアの旗
	/*
	int n, m;
	cin >> n >> m;
	string S[50];

	for (int i = 0; i < n; i++) {
		string s;
		cin >> s;
		S[i] = s;
	}

	int ans = 9999999, temp;
	for (int i = 1; i < n - 1; i++) {
		for (int j = i + 1; j < n; j++) {
			temp = ans;
			ans = 0;
			for (int k = 0; k < n; k++) {
				for (int l = 0; l < m; l++) {
					if (k < i && S[k][l] != 'W')
						ans++;
					if (k >= i && k < j && S[k][l] != 'B')
						ans++;
					if (k >= j && S[k][l] != 'R')
						ans++;
				}
			}
			ans = min(temp, ans);
		}
	}

	cout << ans << endl;
	*/
	//指輪
	/*
	string s;
	int n;
	cin >> s >> n;
	int ans = 0;
	char C[20];
	for (int i = 0; i < n; i++) {
	string t;
	cin >> t;
	for (int j = 0; j < 10; j++) {
	C[j] = t[j];
	}
	for (int j = 0; j < s.size() - 1; j++) {
	C[t.size() + j] = t[j];
	}

	int k = 0;
	for (int j = 0; j < sizeof(C); j++) {
	if (C[j] == s[k]) {
	if (k == s.size() - 1) {
	ans++;
	break;
	}
	else {
	k++;
	}
	}
	else {
	k = 0;
	if (C[j] == s[k]) {
	if (k == s.size() - 1) {
	ans++;
	break;
	}
	else {
	k++;
	}
	}
	}
	}
	}
	cout << ans << endl;
	*/
	//JOIとIOI(未）
	/*
	while (true)
	{
	string s;
	cin >> s;
	if (s == "EOF")
	break;

	int joi = 0, ioi = 0;
	string j = "JOI", i = "IOI";
	int k = 0;
	for (int i = 0; i < s.size()-2; i++) {


	if (s[i] == 'J' && s[i+1] == 'O' && s[i+2] == 'I') {
	joi++;
	i++;
	}
	if (s[i] == 'I' && s[i + 1] == 'O' && s[i + 2] == 'I') {
	ioi++;
	i++;
	}

	}

	cout << joi << endl;
	cout << ioi << endl;
	}
	*/

	//カードの並び替え
	/*
	int n, m;
	cin >> n >> m;
	int A[200];
	for (int i = 0; i < 2 * n; i++) {
	A[i] = i + 1;
	}

	for (int i = 0; i < m; i++) {
	int k;
	cin >> k;
	if (k == 0) {
	int B[200];
	for (int j = 0; j < n; j++) {
	B[2*j] = A[j];
	B[2*j + 1] = A[n + j];
	}
	for (int j = 0; j < 2 * n; j++) {
	A[j] = B[j];
	}
	}
	else {
	int B[200];
	for (int j = 0; j < 2*n-k; j++) {
	B[j] = A[k + j];
	}
	for (int j = 0; j < k; j++) {
	B[2*n - k + j] = A[j];
	}

	for (int j = 0; j < 2 * n; j++) {
	A[j] = B[j];
	}
	}
	}


	for (int i = 0; i < 2 * n; i++) {
	cout << A[i] << endl;
	}
	*/
	//ゼッケンの交換
	/*
	int n, m;
	cin >> n >> m;
	int A[100];
	for (int i = 0; i < n; i++) {
	int a;
	cin >> a;
	A[i] = a;
	}
	for (int i = 1; i <= m; i++) {
	for (int j = 1; j < n; j++) {
	if (A[j - 1] % i > A[j] % i) {
	int temp = A[j - 1];
	A[j - 1] = A[j];
	A[j] = temp;
	}
	}
	}
	for (int i = 0; i < n; i++) {
	cout << A[i] << endl;
	}
	*/
	//クリスマスパーティー
	/*
	int n, m;
	cin >> n >> m;

	int A[100];
	for (int i = 0; i < m; i++) {
	cin >> A[i];
	}

	int P[100];
	for (int i = 0; i < n; i++) {
	P[i] = 0;
	}
	for (int i = 0; i < m; i++) {
	int x = 0;
	for (int j = 0; j < n; j++) {
	int b;
	cin >> b;
	if (b == A[i]) {
	P[j]++;
	}
	else {
	x++;
	}
	if (j == n - 1) {
	P[A[i]-1] += x;
	}
	}
	}

	for (int i = 0; i < n; i++) {
	cout << P[i] << endl;
	}
	*/
	//シーザー暗号
	/*
	string s;
	cin >> s;
	for (int i = 0; i < s.size(); i++) {
	if (s[i] == 'A'||s[i] == 'B'||s[i]=='C') {
	s[i] += 23;
	cout << s[i];
	}
	else {
	s[i] -= 3;
	cout << s[i];
	}
	}
	cout << endl;
	*/

	//ABC
	//happy barthday
	/*int a, b;
	cin >> a >> b;
	if (max(a, b) > 8) {
	cout << ":(";
	return 0;
	}
	cout << "Yay!";
	*/
	//#2
	/*int d, n;
	cin >> d >> n;
	if (n == 100) {
	n++;
	}
	cout << n*pow(100, d) << endl;
	*/
	//#3
	/*
	int n;
	cin >> n;
	int x = 0;
	for (int i = 0; i < n; i++) {
	int a;
	cin >> a;
	if (a % 2==0)
	x++;
	}
	int ans=0;

	for(int i = 1; i <= x; i++) {
	ans += n - i;
	}
	cout << ans << endl;
	*/

	//未提出者は誰だ


	//Attention
	/*
	int n;
	string s;
	cin >> n >> s;

	vector<int> X;
	for (int i = 0; i < n; i++) {
	X.push_back(0);
	}

	for (int i = 0; i < n; i++) {
	for (int j = 0; j < i; j++) {
	if (s[j] == 'W')
	X[i]++;
	}
	for (int j = i + 1; j < n; j++) {
	if (s[j] == 'E') {
	X[i]++;
	}
	}
	}

	int ans = X[0];
	for (int i = 0; i < n - 1; i++) {
	if (X[i] > X[i + 1]) {
	ans = X[i + 1];
	}
	}
	cout << ans << endl;
	*/
	//Cut and Count
	/*
	int n;
	string s;
	cin >> n >> s;
	int C[100];

	for (int i = 0; i < 100; i++) {
	C[i] = 1;
	}

	for (int i = 0; i < n; i++) {
	for (int j = 0; j < i; j++) {
	for (int k = i; k < n; k++) {
	if (s[j] == s[k])
	C[i]++;
	}
	}
	}

	int ans=C[0];
	for (int i = 0; i < 99; i++) {
	if (C[i] < C[i + 1])
	ans = C[i + 1];
	}
	cout << ans / 2 << endl;
	*/
	//
	/*
	int a, b;
	cin >> a >> b;
	int x;
	x = max(a + b, a - b);
	x = max(x, a*b);
	cout << x << endl;
	*/
	//はじめてのあっとこーだー
	/*
	int a, b, c;
	cin >> a >> b >> c;
	string s;
	cin >> s;

	cout << (a + b + c) << " " << s <<endl;
	*/
	//気象予報士
	/*
	int h, w;
	cin >> h >> w;
	char x[100][100];
	int ans[100][100];
	for (int i = 0; i < h; i++) {
	string a;
	cin >> a;
	for (int j = 0; j < w; j++) {
	x[i][j] = a[j];
	ans[i][j] = -1;
	}
	}
	for (int i = 0; i < w-1; i++) {
	for (int j = 0; j < h; j++) {
	for (int k = 0; k < w; k++) {
	if (x[j][k-i] == 'c'&&ans[j][k]==-1)
	ans[j][k] = i;
	}
	}
	}
	for (int i = 0; i < h; i++) {
	for (int j=0; j < w; j++) {
	cout << ans[i][j];
	if (j == w-1) break;
	cout << " ";
	}
	cout << endl;
	}
	*/
	//サッカー
	/*
	int N;
	cin >> N;
	int P[100];
	for (int i = 0; i < 100; i++) {
	P[i] = 0;
	}
	for (int i = 0; i < N*(N - 1) / 2; i++) {
	int a, b,c,d;
	cin >> a >> b >> c >> d;
	if (c > d)
	P[a] += 3;
	if (c == d) {
	P[a]++;
	P[b]++;
	}
	if (c < d)
	P[b] += 3;
	}
	int Q[100];
	for (int i = 0; i < N; i++) {
	Q[i] = P[i];
	}
	sort(Q, Q + 100);
	reverse(Q, Q + 100);
	int Ans[100];
	for (int i = 0; i < N; i++) {
	for (int j = 0; j < N; j++) {
	if (P[i] == Q[j]) {
	Ans[i] = j+1;
	}
	}
	}
	for (int i = 0; i < N; i++) {
	cout << Ans[i] << endl;
	}
	*/
	//レシート
	/*
	int N;
	int ans[5];
	int a;
	int i = 0;
	while (true)
	{
	cin >> N;
	if (N == 0) break;
	for (int j = 0; j < 9; j++) {
	cin >> a;
	N -= a;
	}
	ans[i] = N;
	i++;
	}
	for (int k = 0; k < 5; k++)
	cout << ans[k] << endl;
	*/
	//コンテスト	
	/*
	int W[10], K[10];
	for (int i = 0; i < 10; i++) {
	cin >> W[i];
	}
	for (int i = 0; i < 10; i++) {
	cin >> K[i];
	}
	sort(W, W + 10);
	reverse(W, W + 10);
	sort(K, K + 10);
	reverse(K, K + 10);
	cout << W[0] + W[1] + W[2] << " " << K[0] + K[1] + K[2] << endl;
	*/
	//ポイントカード
	/*
	int N, M;
	cin >> N >> M;
	int a;
	int A[5000];
	int b = 0;
	int x = 0;
	for (int i = 0; i <  M; i++) {
	cin >> a;
	if (a < N) {
	A[x]=a;
	x++;
	}
	else
	{
	b++;
	}
	cin >> a;
	}
	int sum = 0;
	if (b < M - 1) {
	sort(A, A+x);
	reverse(A, A+x);
	for (int i = 0; i < M - 1 - b; i++) {
	sum += N - A[i];
	}
	}
	cout << sum << endl;
	*/
	//合計時間
	/*
	int sum=0, n;
	for (int i = 0; i < 4; i++) {
	cin >> n;
	sum += n;
	}
	cout << sum / 60 << endl;
	cout << sum % 60 << endl;
	//平均点
	/*
	int P[5];
	int sum=0;
	for (int i = 0; i < 5; i++) {
	cin >> P[i];
	if (P[i] < 40) P[i] = 40;
	sum += P[i];
	}
	cout << sum / 5 << endl;
	*/
	//投票
	/*
	int N, M;
	cin >> N >> M;
	int A[1000], vote[1000];
	for (int i = 0; i < N; i++) {
	cin >> A[i];
	vote[i] = 0;
	}
	int b;
	for (int i = 0; i < M; i++) {
	cin >> b;
	for (int j = 0; j < N; j++) {
	if (A[j] <= b) {
	vote[j]++;
	break;
	}
	}
	}
	int temps = 0, ans;
	for (int i = 0; i < N; i++) {
	if (vote[i] > temps) {
	temps = vote[i];
	ans = i;
	}
	}
	cout << ans + 1 << endl;
	*/
	//2.すごろく	
	/*
	int n;
	cin >> n;
	int A, _A = 1;
	int k = 0;
	int A_count[100];
	A_count[0] = 1;
	for (int i = 0; i < n; i++)
	{
	cin >> A;
	if (A == 1)
	{
	if (A == _A)
	{
	A_count[k]++;
	}
	else
	{
	k++;
	A_count[k] = 2;
	}
	}
	_A = A;
	}
	sort(A_count, A_count + k + 1);
	cout << A_count[k] << endl;
	*/
	//タイムカード
	/*
	int t[2][3];
	int x[3][3];
	for (int n=0; n < 3; n++)
	{
	for (int i=0; i < 2; i++)
	for (int k=0; k < 3; k++)
	cin >> t[i][k];

	for (int m = 2; m >= 0; m--)
	{
	x[n][m] = t[1][m] - t[0][m];
	if (t[0][m] > t[1][m])
	{
	x[n][m] += 60;
	t[1][m - 1]--;
	}
	}
	}
	for (int n= 0; n < 3; n++)
	{
	cout << x[n][0] << ' ' << x[n][1] <<' '<< x[n][2] << endl;
	}
	*/


//	return 0;
//}

Measured memory_bytes: 256