
"use strict";

process.stdin.resume();
process.stdin.setEncoding('utf8');

var g_input = '';
process.stdin.on('data', function(chunk) {
    g_input += chunk;
});

process.stdin.on('end', function() {
    Main(g_input.split(/\r?\n/));
});

function Main(input) {

    const tokens = input[0].split(' ').map(function(value) { return parseInt(value, 10); });
    const r = tokens[0];
    const g = tokens[1];
    const b = tokens[2];
    const n = tokens[3];

    const ans = dfs(0, 0, 0, r, g, b, n);
    console.log(ans);

    return 0;
}

function dfs(rnum, gnum, bnum, r, g, b, n) {
    
    if (n === 0) {
        return 1;
    }

    if (n < 0) {
        return 0;
    }

    let ret = 0;
    if (gnum === 0 && bnum === 0) {
        ret += dfs(rnum + 1, gnum, bnum, r, g, b, n - r)    
    }

    if (bnum === 0) {
        ret += dfs(rnum, gnum + 1, bnum, r, g, b, n - g);
    }

    ret += dfs(rnum, gnum, bnum + 1, r, g, b, n - b);
    
    return ret;
}
