Problem:
Score : 100 points

Problem Statement

We conducted a survey on newspaper subscriptions.
More specifically, we asked each of the N respondents the following two questions:

Question 1: Are you subscribing to Newspaper X?

Question 2: Are you subscribing to Newspaper Y?

As the result, A respondents answered "yes" to Question 1, and B respondents answered "yes" to Question 2.

What are the maximum possible number and the minimum possible number of respondents subscribing to both newspapers X and Y?

Write a program to answer this question.

Constraints

1 \leq N \leq 100

0 \leq A \leq N

0 \leq B \leq N

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N A B

Output

Print the maximum possible number and the minimum possible number of respondents subscribing to both newspapers, in this order, with a space in between.

Sample Input 1

10 3 5

Sample Output 1

3 0

In this sample, out of the 10 respondents, 3 answered they are subscribing to Newspaper X, and 5 answered they are subscribing to Newspaper Y.

Here, the number of respondents subscribing to both newspapers is at most 3 and at least 0.

Sample Input 2

10 7 5

Sample Output 2

5 2

In this sample, out of the 10 respondents, 7 answered they are subscribing to Newspaper X, and 5 answered they are subscribing to Newspaper Y.

Here, the number of respondents subscribing to both newspapers is at most 5 and at least 2.

Sample Input 3

100 100 100

Sample Output 3

100 100

Solution in JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

// parameter "input" gets all data
function Main(input) {
	// the first line is assigned to input[0], the second line is assigned to input[1] similarly.
	var splitInput = input.split("\n");
	var n = (splitInput[0])
	var plateArray = splitInput.slice(1).map(function(e){
		var splitab = e.split(" ")
		return [parseInt(splitab[0]),parseInt(splitab[1]),parseInt(splitab[0])+parseInt(splitab[1])]
	}).sort(function(x,y) {
		if (x[2] < y[2]) {
			return -1;
		}
		if (x[2] > y[2]) {
			return 1;
		}
		  return 0;
	})
	
	var aresult = 0
	var bresult = 0
	
	for (var i=0; i<n; i++){
		/*var j = 0
		var j0 = 0
		while (i+j < n && plateArray[i+j][2] == plateArray[i][2]){
			if (plateArray[i+j][i%2] > plateArray[i+j0][i%2]){
				j0 = j
			}
			j++
		}
		if (j0 != 0) {
			var tmp = plateArray[i].slice(0)
			plateArray[i] = plateArray[i+j0].slice(0)
			plateArray[i+j0] = tmp
		}*/
		if (i%2 == 0) {
			//console.log('a take %d', plateArray[i][i%2])
			aresult += plateArray[i][i%2]
		} else {
			//console.log('b take %d', plateArray[i][i%2])
			bresult += plateArray[i][i%2]
		}
	}
	
	//output
	console.log('%d',aresult-bresult);
}
// Don't edit this line!
Main(require("fs").readFileSync("/dev/stdin", "utf8"));