← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func find(i int, next []int) int {
	root := i
	for next[root] != root {
		root = next[root]
	}
	curr := i
	for curr != root {
		nxt := next[curr]
		next[curr] = root
		curr = nxt
	}
	return root
}

func digitSum(x int) int {
	sum := 0
	for x > 0 {
		sum += x % 10
		x /= 10
	}
	return sum
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for tc := 0; tc < t; tc++ {
		var n, q int
		fmt.Fscan(reader, &n, &q)

		a := make([]int, n+2)
		next := make([]int, n+2)
		for i := 1; i <= n; i++ {
			fmt.Fscan(reader, &a[i])
			next[i] = i
		}
		next[n+1] = n + 1

		for i := 1; i <= n; i++ {
			if a[i] <= 9 {
				next[i] = i + 1
			}
		}

		for i := 0; i < q; i++ {
			var typeQuery int
			fmt.Fscan(reader, &typeQuery)

			if typeQuery == 1 {
				var l, r int
				fmt.Fscan(reader, &l, &r)
				curr := find(l, next)
				for curr <= r {
					a[curr] = digitSum(a[curr])
					if a[curr] <= 9 {
						next[curr] = curr + 1
					}
					curr = find(curr+1, next)
				}
			} else {
				var x int
				fmt.Fscan(reader, &x)
				fmt.Fprintln(writer, a[x])
			}
		}
	}
}