Вартість прогулянки
Є кілька катерів і велика група людей. Для кожного катера відома його місткість. Для кожної людини відомо, на яких катерах вона хотіла б покататися. Після досвіду попереднього завдання власники катерів зрозуміли, що такий спосіб оплати може бути невигідним. Тому було вирішено стягувати однакову плату за кожен використаний катер, незалежно від кількості людей на ньому. Потрібно розподілити людей по катерах на одну морську прогулянку так, щоб мінімізувати кількість використаних катерів.
Вхідні дані
Два числа N і K (1 ≤ N ≤ 16, 1 ≤ K ≤ 100) - кількість катерів і людей. N рядків, у кожному з яких одне число - s (0 ≤ s ≤ 100) - кількість місць у катері. Далі K рядків, у кожному з яких спочатку вказано число t - кількість катерів, які підходять поточній людині, а потім перелік номерів цих катерів. Усі номери в межах від 1 до N, кожен номер зустрічається не більше одного разу.
Вихідні дані
Одне число - мінімальна кількість катерів, або -1, якщо всіх людей розсадити по катерах не вдасться.