LÀM BÀI TẬP (Tên chương trình: exercise.cpp/exercise.pas) Thiên học sinh chăm làm tập mà cô giáo giao nhà Ngồi ra, Thiên có kế hoạch học tập khoa học Thiên tự đặt nguyên tắc bạn làm tập dễ trước làm tập khó sau Sau đọc hết N tập mà cô giao cho, Thiên so sánh mức độ dễ khó vài cặp tập, ghi vào sổ tay Có tổng cộng M dòng ghi Bây giờ, Thiên quan tâm đến việc xếp tập cho với nguyên tắc Chúng ta định nghĩa rằng, thứ tự tập cách xếp i, tập thực sau Thiên làm hoàn thành i -1 tập khác Việc xếp công việc đơn giản với Thiên Thiên tự xếp Tuy nhiên, có điều mà Thiên cảm thấy lí thú xếp là, có tất cách xếp để làm hết N tập, dựa nguyên tắc mà Thiên ghi chú? Thiên tò mò điều này, Thiên bận làm tập nên Thiên nhờ bạn trẻ thi Free Contest giải giúp! Dữ liệu: Gồm M+1 dòng: Dòng đầu tiên: Gồm hai số nguyên dương N M số lượng tập Thiên bị giao số dòng ghi M dòng tiếp theo, dòng chứa hai số u v, cho biết tập u dễ tập v, nói cách khác, tập u cần làm trước tập v Kết quả: Ghi số nguyên tổng số cách làm tập Lưu ý: Hai cách làm xem khác tồn tập mà thứ tự tập cách cách khác Dữ liệu vào toán ln đảm bảo có lời giải Giới hạn: N ≤ 20 M≤ Ví dụ: sample input sample output 5 5 Giải thích: cách xếp tập mà Thiên làm là: 5 5 Dễ thấy cách thỏa mãn: tập làm trước tập 2, tập làm trước tập 3, tập làm trước tập 4, tập làm trước tập 5, tập làm trước tập 4, tập làm trước tập 5, tập làm trước tập