Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

JUPT11 - Júpiter Ataca!

Júpiter está invadindo! As principais cidades tem sido destruídas por espaçonaves Jovianas e a humanidade está lutando contra. Nlogônia está à frente da contraofensiva, invadindo os sistemas de controle das espaçonaves.

Diferente dos computadores Terráqueos, nos quais usalmente um byte possui 2n possíveis valores, os computadores Jovianos usam bytes com B possíveis valores, {0,1,...,B-1}. Os engenheiros de software Nlogonianos tem realizado engenharia reversa sobre o firmware das espaçonaves Jovianas, e planejam sabotá-lo de modo que as embarcações eventualmete autodestruam-se.

Como uma medida de segurança, entretanto, as espaçonaves Jovianas rodam um programa supervisor que periodicamente checa a integridade do firmware, aplicando hashing sobre porções dele e comparando o resultado contra valores bons conhecidos. Para aplicar o hashing sobre uma porção do firmware do byte na posição i até o byte na posição j, o supervisor usa a função de hashing

onde P é um número primo. Por exemplo, se B = 20 e P = 139, enquanto os bytes 2 ao 5 do firmware tem os valores f2 = 14, f3 = 2, f4 = 2 e f5 = 4 então

Os criptologistas Nlogonianos precisam encontrar um meio de sabotar o firmware sem esbarrar no supervisor. Como um primeiro passo, a você foi atribuída a função de escrever um programa para simular a intercalagem de dois tipos de comandos: edição de bytes do firmware pelos engenheiros de software Nlogonianos, e cômputo de hashes de porções do firmware pelo program supervisor Joviano. No início da simulação o valor de cada byte é zero.

Entrada

Cada caso de teste é descrito usando várias linhas. A primeira linha contém quatro inteiros B, P, L e N, onde B é o número de possíveis valores de um byte Joviano, P é o módulo da hash Joviana (2 ≤ B < P ≤ 109 e P primo), L é o comprimento (número de bytes Jovianos) do firmware das espaçonaves, e N é o número de comandos a simular (1 ≤ L, N ≤ 105). No início da simulação o valor de cada byte no firmware é fi = 0 para 1 ≤ i ≤ L. Cada uma das N linhas seguintes descreve um comando a simular. Cada descrição de comando começa com uma letra maiúscula que é ou um 'E' ou um 'H', com os seguintes significados.

  • 'E': A linha descreve um comando de edição. A letra é seguida por dois inteiros I e V indicando que o byte na posição I do firmware (ou seja, fi) deve receber o valor V (1 ≤ I ≤ L e 0 ≤ V ≤ B-1).
  • 'H': A linha descreve um comando de hash. A letra é seguida por dois inteiro I e J indicando que H(fi...fj) deve ser computado (1 ≤ I ≤ J ≤ L)
  • O último caso de teste deve ser seguido por uma linha contendo quatro zeros.

    Saída

    Para cada caso de teste imprima os resultados de cada comando de hashing na entrada. Na i-ésima linha escreva um inteiro representando o resultado do i-ésimo comando de hashing. Imprima uma linha contendo um único caractere '-' (hífen) após cada caso de teste

    Exemplo

    Entrada
    
    20 139 5 7 
    E 1 12 
    E 2 14 
    E 3 2 
    E 4 2 
    E 5 4 
    H 2 5 
    E 2 14 
    10 1000003 6 11 
    E 1 3 
    E 2 4 
    E 3 5 
    E 4 6 
    E 5 7 
    E 6 8 
    H 1 6 
    E 3 0 
    E 3 9 
    H 1 3 
    H 4 6 
    999999935 999999937 100000 7 
    E 100000 6 
    E 1 7 
    H 1 100000 
    E 50000 8 
    H 1 100000 
    H 25000 75000 
    H 23987 23987 
    0 0 0 0 
    
    Saída
    
    115
    -
    345678
    349
    678
    -
    824973478
    236724326
    450867806
    0
    -
    
    

    Adicionado por:Wanderley Guimarăes
    Data:2012-05-27
    Tempo limite:3.370s
    Tamanho do fonte:50000B
    Memory limit:1536MB
    Cluster: Cube (Intel G860)
    Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
    Origem:Final Sul-Americana da Maratona de Programaçăo da ACM 2011

    © Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.