Beautiful Now

시간 제한2초메모리 제한512 MB

요약
정수 n과 교환 횟수 k가 주어질 때, 앞자리에 0이 오지 않도록 자릿수를 교환해서 얻을 수 있는 가장 작은 수와 가장 큰 수를 구한다.
난이도

보통10점 중 7점

유형
그리디, 완전 탐색, DFS, 문자열
정답자
아직 제출이 없습니다

문제

Anton에게는 양의 정수 (n)이 있다. 그런데 그 수가 상당히 지저분해 보여서, Anton은 숫자를 (k)번 교환해 아름답게 만들고 싶어 한다.

(n)의 십진수 표현을 ((x_1x_2 \dots x_m){10})이라 하자. 이는 (1 \le x_1 \le 9, 0 \le x_i \le 9 (2 \le i \le m))를 만족하며 (n = \sum{i=1}^{m}{x_i10^{m-i}})이다. 각 교환에서 Anton은 두 자릿수 (x_i)와 (x_j) ((1 \le i \le j \le m))를 선택해, 교환 후의 정수가 앞에 0이 없으면 두 자릿수를 바꿀 수 있다.

(k)번 교환한 후 Anton이 얻을 수 있는 최솟값과 최댓값을 구하시오.

입력

첫째 줄에는 테스트 케이스의 수 (T)가 주어진다.

다음 (T)개 줄에 각각 테스트 케이스가 주어지며, 공백으로 구분된 두 정수 (n)과 (k)가 포함된다. (1 \le T \le 100, 1 \le n, k \le 10^9)이다.

출력

각 테스트 케이스마다 한 줄에 최솟값과 최댓값을 공백 하나로 구분해 출력한다.

예제1

  1. 예제 1

    입력
    5
    12 1
    213 2
    998244353 1
    998244353 2
    998244353 3
    
    예상 출력
    12 21
    123 321
    298944353 998544323
    238944359 998544332
    233944859 998544332