Silnie

Tomek zajmował się bardzo trudnym problemem kombinatorycznym. Jako wynik otrzymał dość długi napis postaci:

p_1!p_2! ... p_n! 
-----------------
q_1!q_2! ... q_m!

Nie jest z tego zbyt zadowolony, gdyż nie wiadomo nawet, czy owa liczba jest całkowita. Z tego powodu prosi Cię o pomoc. Chciałby, żebyś przekształcił wyrażenie do postaci

r_1!s_1 * r_2!s_2 ... r_k!s_k * t

gdzie r_i są liczbami całkowitymi większymi od 1, w kolejności ściśle malejącej, a s_i oraz t są dodatnimi liczbami całkowitymi. Spośród możliwych rozwiązań, Tomek chciałby dostać postać, w której r_1 jest jak największe, wśród tych taką, w której s_1 jest największe, wśród tych tą o największym r_2, itd. Na samym końcu chciałby, aby t było jak najmniejsze (czyli takie, że już nie można dodać żadnego nowego wyrazu postaci r!^s). Tomka nie interesuje t, bo w problemach kombinatorycznych ważne są tylko silnie.

Wejście

W pierwszym wierszu standardowego wejścia znajduje się liczby całkowite n i m (1 <= n,m <= 1000). Drugi wiersz zawiera n liczb całkowitych p_i (1 <= p_i <= 10000), a trzeci - m liczb całkowitych q_i (1 <= q_i <= 10000).

Wyjście

Na standardowe wyjście Twój program powinien wypisać liczbę k. Jeśli wynik Tomka nie jest całkowity, wypisz k=-1. Jeśli wynik jest całkowity, ale nie dzieli się przez żadne silnie, wypisz k=0. W przeciwnym razie wypisz k>0, a następnie k wierszy, z których i-ty będzie zawierał r_i oraz s_i.

Przykład

Dla danych:
4 2
9 2 2 2
3 4

Poprawnym wyjściem jest:
2
7 1
2 2