import sys
input=sys.stdin.readline
print=sys.stdout.write

def _join(u,v):
    u_p,v_p=_find(u),_find(v)
    if u_p<v_p:v_p,u_p=u_p,v_p
    if u_p==v_p:return False
    cnts[u_p]+=cnts[v_p]
    nums[u_p]+=nums[v_p]
    parent[v_p]=u_p
    return True


def _find(p):
    root=p
    while root!=parent[root]:
        root=parent[root]
    while root!=parent[p]:
        t=parent[p]
        parent[p]=root
        p=t
    return root

def find_water(node):
    p=_find(node)
    return nums[p]/cnts[p]

def join(l,r):
    i=_find(l)
    while i<r:
        _join(i,i+1)
        i=_find(i)

n,m=map(int,input().split())
cnts=[1]*n
parent=list(range(n))
nums=list(map(int,input().split()))
ans=[]
for _ in range(m):
    op=list(map(int,input().split()))
    if op[0]==1:
        join(op[1]-1,op[2]-1)
        continue
    water=find_water(op[1]-1)
    ans.append(str(water))
print("\n".join(ans))

自行理解