Soon after the Chunga-Changa island was discovered, it started to acquire some forms of civilization and even market economy. A new currency arose, colloquially called "chizhik". One has to pay in chizhiks to buy a coconut now.

Sasha and Masha are about to buy some coconuts which are sold at price z chizhiks per coconut. Sasha has x chizhiks, Masha has y chizhiks. Each girl will buy as many coconuts as she can using only her money. This way each girl will buy an integer non-negative number of coconuts.

The girls discussed their plans and found that the total number of coconuts they buy can increase (or decrease) if one of them gives several chizhiks to the other girl. The chizhiks can't be split in parts, so the girls can only exchange with integer number of chizhiks.

Consider the following example. Suppose Sasha has 5 chizhiks, Masha has 4 chizhiks, and the price for one coconut be 3 chizhiks. If the girls don't exchange with chizhiks, they will buy 1 + 1 = 2 coconuts. However, if, for example, Masha gives Sasha one chizhik, then Sasha will have 6 chizhiks, Masha will have 3 chizhiks, and the girls will buy 2 + 1 = 3 coconuts. 

It is not that easy to live on the island now, so Sasha and Mash want to exchange with chizhiks in such a way that they will buy the maximum possible number of coconuts. Nobody wants to have a debt, so among all possible ways to buy the maximum possible number of coconuts find such a way that minimizes the number of chizhiks one girl gives to the other (it is not important who will be the person giving the chizhiks).

Input

The first line contains three integers x, y and z (0 ≤ x, y ≤ 10^{18}, 1 ≤ z ≤ 10^{18}) — the number of chizhics Sasha has, the number of chizhics Masha has and the price of a coconut. 

Output

Print two integers: the maximum possible number of coconuts the girls can buy and the minimum number of chizhiks one girl has to give to the other.

Examples

Input


5 4 3


Output


3 1


Input


6 8 2


Output


7 0

Note

The first example is described in the statement. In the second example the optimal solution is to dot exchange any chizhiks. The girls will buy 3 + 4 = 7 coconuts.
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) throws IOException {
        AReader reader = new AReader(System.in);
        AWriter writer = new AWriter(System.out);
        long a=Long.valueOf(reader.next());
        long b=Long.valueOf(reader.next());
        long price=Long.valueOf(reader.next());
        HelpChanga helpChanga=new HelpChanga(a,b,price);
        helpChanga.getAns();
        writer.println(helpChanga.minss+" "+helpChanga.maxss);
        reader.close();
        writer.close();
    }
}

class WordSquare{
    private char[][] a;
    private int n;
    private char[][] out;
    private int[][] mark;
    private int direct[][]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
    private String demo="yizhong";
    WordSquare(int n,char[][] a){
        this.a=a;
        this.n=n;
        out=new char[n][n];
        mark=new int[n][n];
    }
    public void tototo(){
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++){
                if(mark[i][j]==0)
                    out[i][j]='*';
                if(a[i][j]=='y')
                    dfs(i,j);
            }
    }
    private boolean limit(int x,int y){
        if(x<n&&y<n&&x>=0&&y>=0)
            return true;
        return false;
    }
    private void dfs(int x,int y){
        for(int i=0;i<8;i++){
            int o=x+direct[i][0];
            int p=y+direct[i][1];
            if(limit(o,p)&&a[o][p]=='i')
                if(dfs(o,p,1,i)) {
                    out[x][y] = 'y';
                    mark[x][y]=1;
                }
        }
    }
    private boolean dfs(int x,int y,int index,int to){
        if(demo.charAt(index)!=a[x][y])
            return false;
        if(index==6) {
            out[x][y] = a[x][y];
            mark[x][y]=1;
            return true;
        }
        int o=x+direct[to][0];
        int p=y+direct[to][1];
        if(!limit(o,p))
            return false;
        if(dfs(o,p,index+1,to)) {
            out[x][y] = demo.charAt(index);
            mark[x][y]=1;
            return true;
        }else
            return false;
    }
    public char[][] getOut() {
        return out;
    }
}
class HelpChanga{
    private long a;
    private long b;
    private long price;

    public long maxss;
    public long minss;
    public void getAns(){
        long ss=a%price;
        long dd=b%price;
        if((ss+dd)/price>=1){
            if((((a/price)+1)*price-a)>(((b/price)+1)*price-b))
                maxss=((b/price)+1)*price-b;
            else
                maxss=((a/price)+1)*price-a;
        }
        else{
            maxss=0;
        }
        minss=(ss+dd)/price+a/price+b/price;
    }

    public HelpChanga(long a, long b, long price) {
        this.a = a;
        this.b = b;
        this.price = price;
    }
}
// Fast reader for ACM By Azure99
class AReader implements Closeable {
    private BufferedReader reader;
    private StringTokenizer tokenizer;

    public AReader(InputStream inputStream) {
        reader = new BufferedReader(new InputStreamReader(inputStream));
        tokenizer = new StringTokenizer("");
    }

    private String innerNextLine() {
        try {
            return reader.readLine();
        } catch (IOException ex) {
            return null;
        }
    }

    public boolean hasNext() {
        while (!tokenizer.hasMoreTokens()) {
            String nextLine = innerNextLine();
            if (nextLine == null) {
                return false;
            }

            tokenizer = new StringTokenizer(nextLine);
        }

        return true;
    }

    public String nextLine() {
        tokenizer = new StringTokenizer("");
        return innerNextLine();
    }

    public String next() {
        hasNext();
        return tokenizer.nextToken();
    }

    public int nextInt() {
        return Integer.valueOf(next());
    }

    public double nextDouble() {
        return Double.valueOf(next());
    }

    public BigInteger nextBigInteger() {
        return new BigInteger(next());
    }

    @Override
    public void close() throws IOException {
        reader.close();
    }
}

// Fast writer for ACM By Azure99
class AWriter implements Closeable {
    private BufferedWriter writer;

    public AWriter(OutputStream outputStream) {
        writer = new BufferedWriter(new OutputStreamWriter(outputStream));
    }

    public void print(Object object) throws IOException {
        writer.write(object.toString());
    }

    public void println(Object object) throws IOException {
        writer.write(object.toString());
        writer.write("\n");
    }

    @Override
    public void close() throws IOException {
        writer.close();
    }
}