output_description: Print the minimum possible value of S_{max} - S_{min}.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      H W
attempt: lim = 100000
  
  
  def is_prime(x):
      if x < 2:
          return False
      for i in range(2, x):
          if x % i == 0:
              return False
      return True
  
  
  def check_rect(x, height, width):
      return (
          True
          if (is_prime(x) and (x < height or x < width)) or not is_prime(x)
          else False
      )
  
  
  def main(h, w):
      s = h * w
      peace = [int(s / 3) for i in range(3)]
      mod = s % 3
  
      if mod == 2:
          peace[0] += 1
          peace[1] += 1
      elif mod == 1:
          peace[0] += 1
  
      lim_2 = int(lim / 2)
      a = lim_2
      b = 0
      for hi in range(h, s, h):
          if abs(peace[0] - hi) < a:
              a = abs(peace[0] - hi)
              b = hi
      for wi in range(w, s, w):
          if abs(peace[0] - wi) < a:
              a = abs(peace[0] - wi)
              b = wi
  
      peace[0] = b
      ss = s - b
      if ss % 2 == 0:
          peace[1], peace[2] = [int(ss / 2) for i in range(2)]
      else:
          peace[1] = int(ss / 2) + 1
          peace[2] = int(ss / 2) - 1
  
      return max(peace) - min(peace)
  
  
  foo, bar = list(map(int, input().split()))
  print(main(foo, bar))
  
problem_description: Statement
  
  There is a bar of chocolate with a height of H blocks and a width of W blocks.
  Snuke is dividing this bar into exactly three pieces. He can only cut the bar
  along borders of blocks, and the shape of each piece must be a rectangle.
  
  Snuke is trying to divide the bar as evenly as possible. More specifically, he
  is trying to minimize S_{max} \- S_{min}, where S_{max} is the area (the
  number of blocks contained) of the largest piece, and S_{min} is the area of
  the smallest piece. Find the minimum possible value of S_{max} - S_{min}.
samples: [{"input": "3 5", "output": "0\n    \n\nIn the division below, S_{max} - S_{min} = 5 - 5 = 0.\n\n![2a9b2ef47b750c0b7ba3e865d4fb4203.png](https://atcoder.jp/img/arc074/2a9b2ef47b750c0b7ba3e865d4fb4203.png)\n\n* * *"}, {"input": "4 5", "output": "2\n    \n\nIn the division below, S_{max} - S_{min} = 8 - 6 = 2.\n\n![a42aae7aaaadc4640ac5cdf88684d913.png](https://atcoder.jp/img/arc074/a42aae7aaaadc4640ac5cdf88684d913.png)\n\n* * *"}, {"input": "5 5", "output": "4\n    \n\nIn the division below, S_{max} - S_{min} = 10 - 6 = 4.\n\n![eb0ad0cb3185b7ae418e21c472ff7f26.png](https://atcoder.jp/img/arc074/eb0ad0cb3185b7ae418e21c472ff7f26.png)\n\n* * *"}, {"input": "100000 2", "output": "1\n    \n\n* * *"}, {"input": "100000 100000", "output": "50000"}]