#include <iostream>

using namespace std;

int x = 1, y = 1;
int win [4][2];

bool End ()
{
	for (int i = 0 ; i < 4 ; i ++)
	{
		if (win [i][0] == x and win [i][1] == y)
		{
			return true;
		}
	}
	return false;
}
	
void init (int n, int m)
{
	win [0][0] = 0; win [0][1] = 0;
	win [1][0] = 0; win [1][1] = m - 1;
	win [2][0] = n - 1; win [2][1] = 0;
	win [3][0] = n - 1; win [3][1] = m - 1;
}

int main ()
{
	cin.tie (NULL);
	ios::sync_with_stdio (false);
	int n, m;
	cin >> n >> m;
	init (n, m);
	
	int* dist = new int [2];
	dist [0] = 1;
	dist [1] = 1;
	unsigned long long answer = 1;
	
	while (!End ())
	{
		int k;
		if (dist [0] == 1 and dist [1] == 1) 
		{
			k = (n - x - 1 < m - y - 1)?n - x - 1:m - y - 1;
		}
		if (dist [0] == -1 and dist [1] == -1) 
		{
			k = (x < y)?x:y;
		}
		if (dist [0] == 1 and dist [1] == -1) 
		{
			k = (n - x - 1 < y)?n - x - 1:y;
		}
		if (dist [0] == -1 and dist [1] == 1) 
		{
			k = (x < m - y - 1)?x:m - y - 1;
		}
		x += k * dist [0];
		y += k * dist [1];
		//cout << x << " " << y << "\n";
		if (End ())
		{
			break;
		}
//----------------------------------------------------------------------------------------------------------------------------------
		if (x == n - 1)
		{
			dist [0] = -dist [0];
			answer ++;
		}
		else if (x == 0)
		{
			dist [0] = -dist [0];
			answer ++;
		}
//----------------------------------------------------------------------------------------------------------------------------------
		if (y == m - 1)
		{
			dist [1] = -dist [1];
			answer ++;
		}
		else if (y == 0)
		{
			dist [1] = -dist [1];
			answer ++;
		}
	}
	cout << answer << "\n";
}
