
def s0():return input()
def s1():return input().split()
def s2(n):return [input() for x in range(n)]
def s3(n):return [input().split() for _ in range(n)]
def s4(n):return [[x for x in s] for s in s2(n)]
def n0():return int(input())
def n1():return [int(x) for x in input().split()]
def n2(n):return [int(input()) for _ in range(n)]
def n3(n):return [[int(x) for x in input().split()] for _ in range(n)]
def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)]
def p0(b,yes="Yes",no="No"): print(yes if b else no)
# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop
w,h,x,y=n1()

ans1=w*h/2
ans2=0
if x*2==w and y*2==h:
    ans2=1
print(ans1,ans2) def s0():return input() s0 def s1():return input().split() s1 input() for x in range(n) for x in range(n) x range(n) range n for x in range(n) input() input def s2(n):return [input() for x in range(n)] s2 n n input().split() for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) input().split() ().split () input split def s3(n):return [input().split() for _ in range(n)] s3 n n [x for x in s] for s in s2(n) for s in s2(n) s s2(n) s2 n for s in s2(n) [x for x in s] def s4(n):return [[x for x in s] for s in s2(n)] s4 n n def n0():return int(input()) n0 int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x def n1():return [int(x) for x in input().split()] n1 int(input()) for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) int(input()) int input() input def n2(n):return [int(input()) for _ in range(n)] n2 n n [int(x) for x in input().split()] for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) [int(x) for x in input().split()] def n3(n):return [[int(x) for x in input().split()] for _ in range(n)] n3 n n tuple(int(x) for x in input().split()) for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) tuple(int(x) for x in input().split()) tuple int(x) int x def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)] t3 n n def p0(b,yes="Yes",no="No"): print(yes if b else no)
# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop p0 b b yes="Yes" yes "Yes" no="No" no "No" w,h,x,y=n1() w n1() n1 h x y ans1=w*h/2 ans1 w*h/2 w*h w h 2 ans2=0 ans2 0 if x*2==w and y*2==h:
    ans2=1 x*2==w and y*2==h x*2==w x*2 x 2 w y*2==h y*2 y 2 h ans2=1 ans2 1 print(ans1,ans2) print ans1 ans2 ans1=w*h/2 w*h/2 ans1 ans2=0 0 ans2 def s2(n):return [input() for x in range(n)] def s2(n):return [input() for x in range(n)] s2 def s0():return input() def s0():return input() s0 def s1():return input().split() def s1():return input().split() s1 def n1():return [int(x) for x in input().split()] def n1():return [int(x) for x in input().split()] n1 def n3(n):return [[int(x) for x in input().split()] for _ in range(n)] def n3(n):return [[int(x) for x in input().split()] for _ in range(n)] n3 y=n1() n1() y def s4(n):return [[x for x in s] for s in s2(n)] def s4(n):return [[x for x in s] for s in s2(n)] s4 def n2(n):return [int(input()) for _ in range(n)] def n2(n):return [int(input()) for _ in range(n)] n2 def p0(b,yes="Yes",no="No"): print(yes if b else no)
# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop def p0(b,yes="Yes",no="No"): print(yes if b else no)
# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop p0 def s3(n):return [input().split() for _ in range(n)] def s3(n):return [input().split() for _ in range(n)] s3 x,y=n1() n1() x def n0():return int(input()) def n0():return int(input()) n0 w,h,x,y=n1() n1() w ans2=1 1 ans2 def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)] def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)] t3 h,x,y=n1() n1() h

def s0():return input()
def s1():return input().split()
def s2(n):return [input() for x in range(n)]
def s3(n):return [input().split() for _ in range(n)]
def s4(n):return [[x for x in s] for s in s2(n)]
def n0():return int(input())
def n1():return [int(x) for x in input().split()]
def n2(n):return [int(input()) for _ in range(n)]
def n3(n):return [[int(x) for x in input().split()] for _ in range(n)]
def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)]
def p0(b,yes="Yes",no="No"): print(yes if b else no)
# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop
w,h,x,y=n1()

ans1=w*h/2
ans2=0
if x*2==w and y*2==h:
    ans2=1
print(ans1,ans2)