Gegeven een getal \(n\) en een verzameling \(M=\{d_1,\dots ,d_k\}\) van kleinere positieve getallen. Het doel is om te bepalen op hoeveel manieren je \(n\) als som van getallen uit \(M\) kan voorstellen — waarbij elk getal natuurlijk meerdere keren mag voorkomen.

Implementeer een \(O(n)\) tijdsbegrensd algoritme voor dit probleem.

Je kan deze oefening op twee manieren interpreteren:

Volg hier de tweede manier, waar de volgorde niet belangrijk is.

Implementeer hiervoor de interface Som1 in een klasse genaamd SomDynamisch. Geef het antwoord modulo \(1000000009\) om overflow te voorkomen.

Gebruik eventueel de testklasse SimpleTest2 om je oplossing lokaal te testen.