#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main() {
    // baca seluruh input dari stdin ke buffer
    char buf[2000];
    size_t pos = 0;
    buf[0] = '\0';
    while (fgets(buf 
+ pos
, sizeof(buf
) - pos
, stdin
)) {         if (pos >= sizeof(buf)-1) break;
        // jika sudah membaca satu baris penuh, tetap kumpulkan seluruh input (toleran)
    }
 
    // ganti koma dengan spasi untuk memudahkan parsing
    for (size_t i 
= 0; i 
< strlen(buf
); ++i
) {         if (buf[i] == ',') buf[i] = ' ';
    }
 
    // tokenisasi dan konversi semua integer yang ada
    int nums[1000];
    int cnt = 0;
    char *tok 
= strtok(buf
, " \t\r\n");     while (tok) {
        char *endptr;
        long val 
= strtol(tok
, &endptr
, 10);         if (endptr != tok) {
            nums[cnt++] = (int)val;
        }
        tok 
= strtok(NULL
, " \t\r\n");    }
 
    if (cnt < 1) return 0;
 
    int idx = 0;
    int n = nums[idx++];                     // jumlah item
    if (cnt < 1 + 2*n + 1) {
        // input tidak lengkap
        return 0;
    }
 
    int *w 
= (int*)malloc(sizeof(int) * n
);     int *v 
= (int*)malloc(sizeof(int) * n
);     if (!w || !v) return 0;
 
    for (int i = 0; i < n; ++i) w[i] = nums[idx++];
    for (int i = 0; i < n; ++i) v[i] = nums[idx++];
    int cap = nums[idx++];
 
    if (cap < 0) cap = 0;
 
    // DP 0-1 knapsack (memaksimalkan nilai)
    // gunakan array 1D untuk efisiensi: dp[j] = maksimum nilai untuk kapasitas j
    int *dp 
= (int*)calloc(cap 
+ 1, sizeof(int));     if (!dp) {
        return 0;
    }
 
    for (int i = 0; i < n; ++i) {
        int wi = w[i];
        int vi = v[i];
        // iterasi mundur agar 0-1 knapsack benar
        for (int j = cap; j >= wi; --j) {
            int cand = dp[j - wi] + vi;
            if (cand > dp[j]) dp[j] = cand;
        }
    }
 
    // hasil optimal = dp[cap]
 
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKaW50IG1haW4oKSB7CiAgICAvLyBiYWNhIHNlbHVydWggaW5wdXQgZGFyaSBzdGRpbiBrZSBidWZmZXIKICAgIGNoYXIgYnVmWzIwMDBdOwogICAgc2l6ZV90IHBvcyA9IDA7CiAgICBidWZbMF0gPSAnXDAnOwogICAgd2hpbGUgKGZnZXRzKGJ1ZiArIHBvcywgc2l6ZW9mKGJ1ZikgLSBwb3MsIHN0ZGluKSkgewogICAgICAgIHBvcyA9IHN0cmxlbihidWYpOwogICAgICAgIGlmIChwb3MgPj0gc2l6ZW9mKGJ1ZiktMSkgYnJlYWs7CiAgICAgICAgLy8gamlrYSBzdWRhaCBtZW1iYWNhIHNhdHUgYmFyaXMgcGVudWgsIHRldGFwIGt1bXB1bGthbiBzZWx1cnVoIGlucHV0ICh0b2xlcmFuKQogICAgfQoKICAgIC8vIGdhbnRpIGtvbWEgZGVuZ2FuIHNwYXNpIHVudHVrIG1lbXVkYWhrYW4gcGFyc2luZwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oYnVmKTsgKytpKSB7CiAgICAgICAgaWYgKGJ1ZltpXSA9PSAnLCcpIGJ1ZltpXSA9ICcgJzsKICAgIH0KCiAgICAvLyB0b2tlbmlzYXNpIGRhbiBrb252ZXJzaSBzZW11YSBpbnRlZ2VyIHlhbmcgYWRhCiAgICBpbnQgbnVtc1sxMDAwXTsKICAgIGludCBjbnQgPSAwOwogICAgY2hhciAqdG9rID0gc3RydG9rKGJ1ZiwgIiBcdFxyXG4iKTsKICAgIHdoaWxlICh0b2spIHsKICAgICAgICBjaGFyICplbmRwdHI7CiAgICAgICAgbG9uZyB2YWwgPSBzdHJ0b2wodG9rLCAmZW5kcHRyLCAxMCk7CiAgICAgICAgaWYgKGVuZHB0ciAhPSB0b2spIHsKICAgICAgICAgICAgbnVtc1tjbnQrK10gPSAoaW50KXZhbDsKICAgICAgICB9CiAgICAgICAgdG9rID0gc3RydG9rKE5VTEwsICIgXHRcclxuIik7CiAgICB9CgogICAgaWYgKGNudCA8IDEpIHJldHVybiAwOwoKICAgIGludCBpZHggPSAwOwogICAgaW50IG4gPSBudW1zW2lkeCsrXTsgICAgICAgICAgICAgICAgICAgICAvLyBqdW1sYWggaXRlbQogICAgaWYgKGNudCA8IDEgKyAyKm4gKyAxKSB7CiAgICAgICAgLy8gaW5wdXQgdGlkYWsgbGVuZ2thcAogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGludCAqdyA9IChpbnQqKW1hbGxvYyhzaXplb2YoaW50KSAqIG4pOwogICAgaW50ICp2ID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpICogbik7CiAgICBpZiAoIXcgfHwgIXYpIHJldHVybiAwOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB3W2ldID0gbnVtc1tpZHgrK107CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgdltpXSA9IG51bXNbaWR4KytdOwogICAgaW50IGNhcCA9IG51bXNbaWR4KytdOwoKICAgIGlmIChjYXAgPCAwKSBjYXAgPSAwOwoKICAgIC8vIERQIDAtMSBrbmFwc2FjayAobWVtYWtzaW1hbGthbiBuaWxhaSkKICAgIC8vIGd1bmFrYW4gYXJyYXkgMUQgdW50dWsgZWZpc2llbnNpOiBkcFtqXSA9IG1ha3NpbXVtIG5pbGFpIHVudHVrIGthcGFzaXRhcyBqCiAgICBpbnQgKmRwID0gKGludCopY2FsbG9jKGNhcCArIDEsIHNpemVvZihpbnQpKTsKICAgIGlmICghZHApIHsKICAgICAgICBmcmVlKHcpOyBmcmVlKHYpOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaW50IHdpID0gd1tpXTsKICAgICAgICBpbnQgdmkgPSB2W2ldOwogICAgICAgIC8vIGl0ZXJhc2kgbXVuZHVyIGFnYXIgMC0xIGtuYXBzYWNrIGJlbmFyCiAgICAgICAgZm9yIChpbnQgaiA9IGNhcDsgaiA+PSB3aTsgLS1qKSB7CiAgICAgICAgICAgIGludCBjYW5kID0gZHBbaiAtIHdpXSArIHZpOwogICAgICAgICAgICBpZiAoY2FuZCA+IGRwW2pdKSBkcFtqXSA9IGNhbmQ7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGhhc2lsIG9wdGltYWwgPSBkcFtjYXBdCiAgICBwcmludGYoIiVkIiwgZHBbY2FwXSk7CgogICAgZnJlZSh3KTsgZnJlZSh2KTsgZnJlZShkcCk7CiAgICByZXR1cm4gMDsKfQo=