import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Scanner;
/*
维护不重复数字的数值综合
*/
public class Main {
static Scanner input = new Scanner(System.in);
static Node[] tree;
static ArrayList<Double> search;
static int num;
static class Node{
double value;
ArrayList<Double> list;
//建立最下级顶点
Node(Double value){
this.value = value;
list = new ArrayList();
list.add(value);
}
//建立除了最下级顶点
Node(int x,int y){
double value = 0;
if(tree[x]!=null&&tree[y]!=null){
//两边数组都存在
ArrayList<Double> temp = new ArrayList();
for(int i=0;i<=tree[x].list.size()-1;i++){
if(!temp.contains(tree[x].list.get(i))){
//还没有就新加进来
temp.add(tree[x].list.get(i));
}
}
for(int i=0;i<=tree[y].list.size()-1;i++){
if(!temp.contains(tree[y].list.get(i))){
//还没有就新加进来
temp.add(tree[y].list.get(i));
}
}
//求和
for(int i=0;i<=temp.size()-1;i++){
value += temp.get(i);
}
this.list = temp;
}else if(tree[x]==null&&tree[y]!=null){
value = tree[x].value;
this.list = tree[x].list;
}else if(tree[y]==null&&tree[x]!=null){
value = tree[y].value;
this.list = tree[y].list;
}else{
//System.out.println("??");
value = 0;
this.list = new ArrayList();
}
this.value = value;
}
}
static void push(int root){
tree[root] = new Node(2*root,2*root+1);
}
static void BuildTree(int l,int r,int root){
if(l==r){
tree[root] = new Node(input.nextDouble());
return;
}
int m = (l+r)/2;
BuildTree(l,m,2*root);
BuildTree(m+1,r,2*root+1);
push(root);
}
static void Query(int L,int R,int l,int r,int root){
//是连续区间的话就给数组加内容
if(l==1&&r==num){
search = new ArrayList();
}
if(L<=l&&r<=R){
if(tree[root]!=null)
for(int i=0;i<=tree[root].list.size()-1;i++){
if(!search.contains(tree[root].list.get(i))){
search.add(tree[root].list.get(i));
}
}
return;
}
int m = (l+r)/2;
if(L<=m)Query(L,R,l,m,2*root);
if(R>m)Query(L,R,m+1,r,2*root+1);
}
public static void main(String[] args){
int count = input.nextInt();
for(int i=0;i<=count-1;i++){
//Start...
num = input.nextInt();
tree = new Node[60001];
BuildTree(1,num,1);
int question = input.nextInt();
for(int j=0;j<=question-1;j++){
Query(input.nextInt(),input.nextInt(),1,num,1);
//答案在search求和里面
double res = 0;
for(int k=0;k<=search.size()-1;k++){
res += search.get(k);
}
BigDecimal res2 = new BigDecimal(Double.toString(res));
System.out.println(res2.stripTrailingZeros().toPlainString());
}
/*test
for(int j=1;j<=2*num;j++){
if(tree[j]!=null)
System.out.println("test输入"+(i+1)+"tree["+j+"].value="+tree[j].value);
}
*/
}
}
}