Problem:
Range Sum Query

Write a program which manipulates a sequence A = {a1, a2, . . . , an} with the following operations:

add(i, x): add x to ai.

getSum(s, t): print the sum of as, as+1,...,at.

Note that the initial values of ai (i = 1, 2, . . . , n) are 0.

Input

n q
com1 x1 y1
com2 x2 y2
...
comq xq yq

In the first line, n (the number of elements in A) and q (the number of queries) are given. Then, q queries are given where com represents the type of queries. '0' denotes add(xi, yi) and '1' denotes getSum(xi, yi).

Output

For each getSum operation, print the sum in a line.

Constraints

1 ≤ n ≤ 100000

1 ≤ q ≤ 100000

If comi is 0, then 1 ≤ xi ≤ n, 0 ≤ yi ≤ 1000.

If comi is 1, then 1 ≤ xi ≤ n, 1 ≤ yi ≤ n.

Sample Input 1

3 5
0 1 1
0 2 2
0 3 3
1 1 2
1 2 2

Sample Output 1

3
2

Solution in Ruby (judge verdict: Accepted)

def get_i() #空白区切の入力を数値(整数)の配列で返す
  return gets.chomp.split(" ").map(&:to_i)
end
def get_f() #空白区切の入力を数値(実数)の配列で返す
  return gets.chomp.split(" ").map(&:to_f)
end
def get() #空白区切の入力を文字列の配列で返す
  return gets.chomp.split(" ")
end
def get_nsp() #入力されたものを一文字ずつに区切った文字列の配列で返す
  return gets.chomp.split("")
end
def yn_judge(bool,y="Yes",n="No") #boolに真偽を投げることで、trueならy、falseならnの値を出力する
  return bool ? y : n 
end
def array(size1,init=nil,size2=1) #size2に二次元配列時の最初の要素数、size1に次の配列の大きさ、initに初期値を投げることでその配列を返す
  if size2==1
    return Array.new(size1){init}
  else
    return Array.new(size2){Array.new(size1){init}}
  end
end

class SegTree
    attr_accessor:node,:n,:monoid
    def initialize(n,monoid)
        @monoid=monoid
        @n=1
        @n*=2 while @n<n
        @node=array(2*@n,@monoid)
    end

    def add(i,x)
      i+=@n
      @node[i]+=x
      while i>1
          i/=2
          @node[i]=@node[i*2]+@node[i*2+1]
      end
    end

    def get_sum(l,r)
        l+=@n
        r+=@n
        sum=@monoid
        while l<r
            if l.odd?
              sum=sum+@node[l] 
              l+=1
            end
            if r.odd?
                r-=1
                sum=sum+@node[r]
            end
            l/=2
            r/=2
        end
        return sum
    end
end

N,Q=get_i
st=SegTree.new(N,0)
Q.times do
    c,x,y=get_i
    if c.zero?
        x-=1
        st.add(x,y)
    else
        x-=1
        y-=1
        puts st.get_sum(x,y+1)
    end
end