만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

A 더하기 B 문제

시간 제한3초메모리 제한1024 MB

요약
두 행의 숫자를 하나씩 바꾸는 질의마다 세 번째 행의 지정된 자리 숫자와 그 질의로 기계의 숫자가 바뀌는 개수를 구합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 수학, 구현
정답자
아직 제출이 없습니다

문제

JB는 A 더하기 B 문제를 푸는 기계를 얻었고, 그 동작 원리가 궁금하다. 그는 당신이 경쟁 프로그래밍에 능숙하고 Link-Cut tree, Lagrange Inversion formula, Sweepline Mo 등 여러 고급 자료구조와 알고리즘을 익혔다는 이야기를 들었다. 그래서 기계와 같은 방식으로 A 더하기 B 문제를 푸는 프로그램을 구현해 달라고 부탁한다.

기계는 3×n3\times n개의 숫자로 이루어져 있다. 첫 두 행의 숫자는 임의로 바꿀 수 있고, 셋째 행은 항상 첫 두 행을 십진수로 더한 값과 같다. 합이 nn자리를 넘더라도 셋째 행에는 하위 nn자리만 남는다.

예를 들어 n=5n=5일 때 세 행은 01234, 56789, 58023 또는 56789, 58023, 14812가 될 수 있다.

함수를 테스트하기 위해 qq개의 질의가 주어진다. ii번째 질의에서는 rir_i번째 행의 cic_i번째 숫자가 did_i로 바뀐다(원래 숫자와 같을 수도 있다). JB는 답을 확인할 시간이 없으므로, 질의 후 셋째 행의 cic_i번째 숫자와 이 질의로 기계의 숫자가 몇 개 바뀌는지만 구해 달라고 한다.

입력

첫째 줄에 두 정수 nn과 qq (1≤n,q≤1061\le n, q\le10^6)가 주어진다.

둘째 줄에는 기계의 첫 번째 행을 나타내는 nn자리 숫자 문자열이 주어진다.

셋째 줄에는 기계의 두 번째 행을 나타내는 nn자리 숫자 문자열이 주어진다.

이어서 qq개의 줄이 주어진다. ii번째 줄에는 세 정수 rir_i, cic_i, did_i (1≤ri≤21\le r_i \le 2, 1≤ci≤n1\le c_i\le n, 0≤di≤90\le d_i\le 9)가 주어진다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 질의 후 셋째 행의 cic_i번째 숫자와, 이 질의로 기계의 숫자가 몇 개 바뀌는지를 공백으로 구분해 두 정수로 출력한다.

힌트

예시에서 초기 행은 01234, 56789, 58023이다.

1번째 질의 후 행은 01234, 06789, 08023이다.

2번째 질의 후 행은 01234, 01789, 03023이다.

3번째 질의 후 행은 01234, 01289, 02523이다.

4번째 질의 후 행은 01234, 01239, 02473이다.

5번째 질의 후 행은 01234, 01234, 02468이다.

예제1

  1. 예제 1

    입력
    5 5
    01234
    56789
    2 1 0
    2 2 1
    2 3 2
    2 4 3
    2 5 4
    
    예상 출력
    0 2
    3 2
    5 3
    7 3
    8 3