<prompt> Unapewa nambari nne kamili minLength, maxLength, oneGroup na zeroGroup.Mfuatano wa binary ni nzuri ikiwa unakidhi masharti yafuatayo: Urefu wa mfuatano uko katika safu minLength, maxLength. Ukubwa wa kila kizuizi cha 1s mfululizo ni mkusanyiko wa Kundi moja. Kwa mfano katika mfuatano wa binary ukubwa wa 00110111100 wa kila block ya zile zinazofuatana ni 2,4. Ukubwa wa kila kizuizi cha 0s mfululizo ni mgawo wa zeroGroup. Kwa mfano, katika mfuatano wa binary ukubwa wa 00110111100 wa kila block ya zile zinazofuatana ni 2,1,2.Rejesha _idadi ya nzuri mifuatano ya binary_. Kwa kuwa jibu linaweza kuwa kubwa sana, lirudishe modulo 109 7.Kumbuka kwamba 0 inachukuliwa kuwa kizidishio cha nambari zote.Mfano wa 1:Ingizo: minLength 2, maxLength 3, OneGroup 1, zeroGroup 2Pato: 5Maelezo: Kuna nyuzi 5 nzuri za binary katika mfano huu: 00 , 11 , 001 , 100 , na 111.Inaweza kuthibitishwa kuwa kuna masharti 5 tu mazuri yanayokidhi hali zote.Mfano wa 2:Ingizo: minLength 4, maxLength 4, OneGroup 4, zeroGroup 3Pato: 1Maelezo: Kuna mfuatano 1 tu mzuri wa binary katika mfano huu: 1111 .Inaweza kuthibitishwa kuwa kuna kamba 1 tu nzuri inayokidhi hali zote.Vikwazo: 1 Urefu wa dakika Urefu wa juu zaidi 105 1 Kundi moja, Kikundi sifuri maxLength  <response>: def countGoodStringsminLength, maxLength, OneGroup, zeroGroup: mod 1000000007 maxCount maxLength oneGroup maxLength zeroGroup dp 0 maxCount 1 dp0 1 kwa mimi katika anuwai 1, maxCount 1: dpi dpi - 1 1 kama i oneGroup 0 au i zeroGroup 0 mwingine 0 mod zaidi 0 kwa mimi katika anuwai maxCount 1: ans ans dpminLength oneGroup minLength zeroGroup - i - 0 kama dakikaUrefu - 1 Kundi moja dakikaUrefu - 1 Kikundi sifuri - i 0 kingine dpminLength - 1 oneGroup minLength - 1 zeroGroup - i mod kurudi ans 