#include <iostream>
using namespace std;

// Функция для проверки, можно ли разместить ковры размером n x m на витрине размера h x w
bool canPlaceCarpets(int n, int m, int h, int w) {
    return (n <= h && m <= w) || (m <= h && n <= w);
}

int main() {
    int h, w;
    cin >> h >> w;

    int left = 1, right = h * w; // Интервал для бинарного поиска
    int result = 0;

    while (left <= right) {
        int mid = (left + right) / 2;
        int n = mid;

        if (canPlaceCarpets(n, n, h, w)) {
            result = mid;
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    cout << result << endl;
    return 0;
}
