import sys MOD = 998244353 def main(): input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]) idx += 1 Q = int(data[idx]) idx += 1 A = list(map(int, data[idx:idx+N])) idx += N queries = [] for _ in range(Q): L = int(data[idx]) - 1 idx += 1 R = int(data[idx]) - 1 idx += 1 queries.append((L, R)) # Precompute the necessary information # Here, we'll process each query directly for demonstration # Note: This is a simplified approach and may not pass all test cases due to time constraints. for L, R in queries: sub = A[L:R+1] while len(sub) > 1: max_val = max(sub) first_max_idx = sub.index(max_val) for j in range(first_max_idx): sub[j] = (sub[j] + max_val) % MOD sub.pop(first_max_idx) print(sub[0] % MOD) if __name__ == '__main__': main()