Le operazioni eseguite su una scheda grafica (GPU) possono essere altamente parallelizzate. Questo significa che, se è possibile svolgere lo stesso tipo di operazione su molti numeri allo stesso tempo, è possibile ottenere risultati più velocemente rispetto a eseguire operazioni diverse in sequenza. Il team sta testando il proprio codice e ti chiede di scrivere un programma che verifichi l’operazione di somma di numerosi numeri effettuata modulo un altro numero.
Dati due elenchi di interi a1,a2,...,an e b1,b2,...,bn, ti viene richiesto di calcolare la somma di ogni coppia ai e bi modulo mi:
(ai+bi)modmi
Tieni presente che il modo in cui viene implementata l’operazione di modulo può variare tra diversi linguaggi di programmazione. In Python, il risultato è sempre non negativo. Tuttavia, in altri linguaggi come C++, il risultato di un’operazione di modulo può essere negativo (ad esempio, -3 % 2 → -1). Un trucco molto diffuso per risolvere il problema è aggiungere m al risultato se è negativo, usando una semplice istruzione if. Un approccio più generico consiste nell’aggiungere m e poi applicare nuovamente il modulo: ((a % m) + m) % m. In questo modo si garantisce che il risultato sia sempre non negativo.
Input
La prima riga dell’input contiene un singolo intero n (1 ≤ n ≤ 100 000), che rappresenta il numero di elementi.
La seconda riga contiene n interi separati da spazio a1,a2,...,an (−109 ≤ ai ≤ 109).
La riga successiva contiene n interi separati da spazio b1,b2,...,bn (−109 ≤ bi ≤ 109).
L’ultima riga contiene n interi separati da spazio m1,m2,...,mn (1 ≤ mi ≤ 109).
Output
Il programma deve stampare n numeri separati da spazio, corrispondenti a (ai+bi)modmi.