Gourmeten | 프로그래밍의 벗 PivotOJ
PivotOJ

Gourmeten

시간 제한: 1000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2010 — onlinekvalBOJ 26936

문제

Den franska gourmeten Frank är en väl respekterad gourmet; hans yrke är att gå runt till olika restauranger, äta av deras mat och ge sitt omdöme om restaurangen. Men han bär på en hemlighet: han är egentligen bara intresserad av att äta så mycket som möjligt och i vilken ordning som helst!

Frank förstår dock att en äkta gourmet inte kan äta hur som helst, t.ex. börja med sin dessert och avsluta med en sallad. Därför ber han om din hjälp att ta fram en lista med alla olika sätt att ordna maträtterna under en bjudning, så han kan välja ut den ordning som är finast.

På bjudningen har Frank MM minuter på sig att äta. Restaurangen bjuder på NN olika rätter som han kan äta hur många portioner som helst av. Varje rätt ii tar ett visst givet antal minuter TiT_i att äta. Frank vill äta kontinuerligt under alla de MM minuter han har på sig, och han vill hinna äta klart alla rätter han påbörjat. Han vill aldrig påbörja en ny rätt innan han ätit färdigt den förra. Din uppgift är att skriva ett program som räknar ut på hur många olika sätt han kan lägga upp middagen, givet dessa restriktioner.

입력

På första raden står ett heltal MM, antalet minuter, där 1M1,0001 \le M \le 1,000.

På andra raden står ett heltal NN, antalet rätter, där 1N301 \le N \le 30.

Därefter följer NN rader med ett heltal TiT_i på varje rad, tiden det tar att äta varje rätt, där 1Ti2001 \le T_i \le 200.

출력

Programmet ska skriva ut antalet möjliga sätt Frank kan äta under exakt MM minuter. Svaret kommer alltid understiga 22 miljarder.

힌트

Frank ska alltså äta under 1010 minuter och han har 22 rätter att välja på, t.ex. sallad (tar 33 minuter att äta), och paj (77 minuter). Det finns bara två sätt att äta på: först paj sen sallad eller tvärtom. Äter han bara sallad kommer han antingen att bli klar för snabbt (3 portioner=9 minuter3 \text{ portioner} = 9 \text{ minuter}) eller för sent (4 portioner=12 minuter4 \text{ portioner} = 12 \text{ minuter}).

예제

예제 1

입력
10
2
7
3
출력
2

예제 2

입력
12
6
1
3
3
5
6
12
출력
498
코드를 제출하려면 로그인하세요.