package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var n, a, b, c int64
fmt.Fscan(in, &n, &a, &b, &c)
A := a / 2
maxZ := n / 2
if c < maxZ {
maxZ = c
}
var ans int64
for z := int64(0); z <= maxZ; z++ {
rem := n - 2*z
lo := rem - A
if lo < 0 {
lo = 0
}
hi := rem
if hi > b {
hi = b
}
if hi >= lo {
ans += hi - lo + 1
}
}
out := bufio.NewWriter(os.Stdout)
fmt.Fprint(out, ans)
out.Flush()
}