Johanna håller på att renovera hemma i sin lägenhet. Eftersom Johanna inte gillar att lämna saker åt slumpen har hon planerat in i detalj precis hur många spikar hon behöver under renoveringen. Totalt sett behöver hon N spikar med längderna x_1,x_2,…,x_N. I hennes spiklåda har hon M spikar av längderna y_1,y_2,…,y_M.
Om Johanna behöver en spik med längd x_i kan hon använda en spik med längd y_j om x_i≤y_j eftersom hon kan kapa av den längre spiken tills den är precis så lång som behövs. Däremot kan hon inte kombinera två korta spikar till en längre spik, eller kapa en spik flera gånger (den har ju bara ett spikhuvud).
Innan Johanna ska börja med renoveringen vill hon veta:
Hon vill köpa så få spikar som möjligt, och vill dessutom köpa spikar av så kort total längd som möjligt.
På den första raden står två heltal 1≤N≤15 och 1≤M≤15 -- antalet spikar Johanna behöver och antalet spikar Johanna har. På den andra raden står N heltal 1≤x_1,x_2,…,x_N≤100, längderna på de spikar Johanna behöver. På den tredje raden står M heltal 1≤y_1,y_2,…,y_M≤100, längderna på de spikar Johanna har.
Programmet ska först skriva ut ett heltal: det minsta antalet spikar Johanna behöver köpa. På nästa rad ska programmet skriva ut längderna på spikarna Johanna ska köpa, i stigande ordning.
I exempel 1 uppfyller behöver Johanna bara fylla på med tre extra spikar av längderna 13, 28 och 77.
I exempel 2 behöver Johanna köpa en till spik av längd 11, och dessutom kapa en spik av längd 100 till 50. Hon skulle kunnat köpa en spik av längd 50 och kapa spiken av längd 100 till längd 11, men då behöver hon köpa spikar av längre total längd.