public class MaxTree extends SegmentsTree {

        public MaxTree(int[] a) {
            super(a);
        }

        @Override
        public int defaultDelta() {
            return -Integer.MAX_VALUE;
        }

        @Override
        public int operation(int a, int b) {
            return Math.max(a, b);
        }

        @Override
        public int defaultValue() {
            return 0;
        }

        @Override
        public void change(int v, int delta) {
            func[v] += delta;
            this.delta[v] += delta;
        }
    }