import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Long cuts = 0L; Long n = sc.nextLong(); Long m = sc.nextLong(); List list = new ArrayList<>(); list.add(new Pair(n, m)); while(!list.isEmpty()){ List res = cut(list.get(0)); if(res != null){ list.addAll(res); cuts++; } list.remove(0); } System.out.println(cuts); } public static boolean canCut(Pair p){ return (p.n > 1 || p.m > 1); } public static List cut(Pair p){ List result = null; if(canCut(p)){ result = new ArrayList<>(2); if(p.n > 1){ result.add(new Pair(1L, p.m)); result.add(new Pair(p.n - 1L, p.m)); }else if(p.m > 1){ result.add(new Pair(p.n, 1L)); result.add(new Pair(p.n, p.m - 1L)); } return result; } return result; } } class Pair{ Long n; Long m; public Pair(Long n, Long m){ this.n = n; this.m = m; } }