एल्गोरिदम और डेटा संरचनाएँ

Range Sum Queries 2

आपको एक ऐसे array के बारे में जानकारी दी गई है, जिसमें कुल n तत्व हैं और साथ ही q क्वेरियाँ दी गई हैं। इन क्वेरियों के दो प्रकार होते हैं:

  1. किसी निर्धारित रेंज का योग निकालना

  2. दिए गए इंडेक्स पर array के तत्व को अपडेट करना

आपका काम इन क्वेरियों को प्रभावी ढंग से संसाधित करना है।

इनपुट

इनपुट की पहली पंक्ति में दो पूर्णांक n और q होते हैं (1 ≤ n, q ≤ 100 000), जो क्रमशः array के तत्वों की संख्या और क्वेरियों की संख्या को दर्शाते हैं।

दूसरी पंक्ति में n रिक्त-स्थानों से अलग किए हुए पूर्णांक होते हैं (), जो array के शुरुआती तत्व हैं।

इसके बाद की q पंक्तियों में प्रत्येक पंक्ति एक क्वेरी का प्रतिनिधित्व करती है:

  1. रेंज सम क्वेरी के लिए: पंक्ति की शुरुआत 1 से होती है, जिसके बाद दो पूर्णांक और दिए जाते हैं (), जो उन इंडेक्सों की रेंज [$$l_i, r_i$$] दर्शाते हैं जिनका योग निकालना है।

  2. किसी तत्व को अपडेट करने की क्वेरी के लिए: पंक्ति की शुरुआत 2 से होती है, जिसके बाद दो पूर्णांक और दिए जाते हैं (), जहाँ अपडेट होने वाले तत्व का इंडेक्स है और उसकी नई मान (value) है।

आउटपुट

प्रत्येक रेंज सम क्वेरी के लिए, दिए गए रेंज में आने वाले सभी मानों का योग अलग-अलग पंक्तियों में प्रिंट करें।

उदाहरण

इनपुट

आउटपुट

5 3
1 2 3 4 5
1 1 3
1 2 4
1 1 5

6
9
15

5 3
1 2 3 4 5
1 1 3
2 1 5
1 1 5

6
19

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB