Problem: Little Victor adores the sets theory. Let us remind you that a set is a group of numbers where all numbers are pairwise distinct. Today Victor wants to find a set of integers S that has the following properties:

  * for all x <image> the following inequality holds l ≤ x ≤ r; 
  * 1 ≤ |S| ≤ k; 
  * lets denote the i-th element of the set S as si; value <image> must be as small as possible. 



Help Victor find the described set.

Input

The first line contains three space-separated integers l, r, k (1 ≤ l ≤ r ≤ 1012; 1 ≤ k ≤ min(106, r - l + 1)).

Output

Print the minimum possible value of f(S). Then print the cardinality of set |S|. Then print the elements of the set in any order.

If there are multiple optimal sets, you can print any of them.

Examples

Input

8 15 3


Output

1
2
10 11


Input

8 30 7


Output

0
5
14 9 28 11 16

Note

Operation <image> represents the operation of bitwise exclusive OR. In other words, it is the XOR operation.

Solution (in JAVA):

Solution:
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskD solver = new TaskD();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskD {
    long l, r, k;
    void bitCheck(long val,PrintWriter out){
        int len = 1 << val;
        int best = 0;
        long pos = -1;
        for (int i = 1; i < len; i++) {
            if (Integer.bitCount(i) > k)continue;
            long cur = 0;
            for (int j = 0; j < val; j++) {
                if ((i & (1 << j)) > 0){
                    cur ^= (l + j);
                }
            }
            if (cur < pos || pos == -1){
                pos = cur;
                best = i;
            }
        }
        out.print(pos+"\n"+Integer.bitCount(best)+"\n");
        for (int i = 0; i < val; i++) {
            if ((best & (1 << i)) > 0)out.print((l + i)+" ");
        }
    }
    public void solve(int testNumber, InputReader in, PrintWriter out) {
        long l = in.nextLong();
        long r = in.nextLong();
        long k = in.nextLong();
        this.l = l;this.r = r;this.k = k;
        if (r - l < 19){
            bitCheck(r - l + 1,out);return;
        }
        if (k == 1){
            out.print(l+"\n"+1+"\n"+l);
            return;
        }
        if (k == 2){
            out.print(1+"\n");
            out.print(2+"\n"+((l / 2)*2 + 2)+" "+((l / 2)*2 + 3));
            return;
        }
        if (k >= 4){
            out.print(0+"\n"+4+"\n");
            long lk = (l / 4)*4 + 4;
            for (int i = 0; i < 4; i++) {
                out.print((lk + i)+" ");
            }
            return;
        }
        long left = 1,mid = 2,right = 3;
        while (true){
            if (right > r)break;
            if (left >= l){
                out.print(0+"\n"+3+"\n");
                out.print(left+" "+mid+" "+right);
                return;
            }
            left = left*2 + 1;
            mid = mid*2 + 1;
            right = right*2;
        }
        out.print(1+"\n");
        out.print(2+"\n"+((l / 2)*2 + 2)+" "+((l / 2)*2 + 3));

    }

}

class InputReader {
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(InputStream stream) {
        reader = new BufferedReader(new InputStreamReader(stream));
        tokenizer = null;
    }

    public String next() {
        while (tokenizer == null || !tokenizer.hasMoreTokens()) {
            try {
                tokenizer = new StringTokenizer(reader.readLine());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return tokenizer.nextToken();
    }

    public long nextLong(){
        return Long.parseLong(next());
    }


}