A group of people played a game. All players had distinct scores, which are positive integers.

Takahashi knows N facts on the players' scores. The i-th fact is as follows: the A_i-th highest score among the players is B_i.

Find the maximum possible number of players in the game.

Constraints

* 1 \leq N \leq 10^5
* 1 \leq A_i \leq 10^9(1\leq i\leq N)
* 0 \leq B_i \leq 10^9(1\leq i\leq N)
* If i ≠ j, A_i ≠ A_j.
* There exists a possible outcome of the game that are consistent with the facts.
* All input values are integers.

Inputs

Input is given from Standard Input in the following format:


N
A_1 B_1
:
A_N B_N


Outputs

Print the maximum possible number of players in the game.

Examples

Input

3
4 7
2 9
6 2


Output

8


Input

5
1 10
3 6
5 2
4 4
2 8


Output

7


Input

2
1 1000000000
1000000000 1


Output

1000000001

import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) {
	Main m = new Main();
	m.answer();
    }

    private Scanner scan = new Scanner(System.in);
    private PriorityQueue<Data> dataQueue;

    public Main() {
	int N = Integer.parseInt(scan.next());
	dataQueue = new PriorityQueue<Data>(N);
	IntStream.range(0, N).forEach(i -> {
		int A = Integer.parseInt(scan.next());
		int B = Integer.parseInt(scan.next());
		dataQueue.add(new Data(A, B));
	    });
	scan.close();
    }

    public final void answer() {
	Data minData = dataQueue.poll();
	int result = minData.A + minData.B; 
	System.out.println(result);
    }

    private static class Data implements Comparable<Data> {
	int A;
	int B;

	public Data(int A, int B) {
	    this.A = A;
	    this.B = B;
	}

	@Override
	public int compareTo(Data o) {
	    return -(this.A - o.A);
	}
    }
}
