import sys,math,itertools from collections import Counter,deque,defaultdict from bisect import bisect_left,bisect_right from heapq import heappop,heappush,heapify mod = 10**9+7 INF = float('inf') def inp(): return int(sys.stdin.readline()) def inpl(): return list(map(int, sys.stdin.readline().split())) def inpl_1(): return list(map(lambda x:int(x)-1, sys.stdin.readline().split())) def inps(): return sys.stdin.readline() def inpsl(x): tmp = inps(); return list(tmp[:x]) def err(x): print(x); exit() n,q = inpl() s = input() ac = [[0]*26 for _ in range(n+1)] for i,x in enumerate(s): for j in range(26): tmp = 1 if 97+j == ord(x) else 0 ac[i+1][j] = ac[i][j] + tmp for _ in range(q): l,r,X = inpl() cnt = 0 for j in range(26): cnt += ac[r][j] - ac[l-1][j] if cnt >= X: print(chr(97+j)) break