import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.NoSuchElementException;

public class Main {

	static final int mod = 1000000007;
	static long[] fac;
	static long[] inv;
	static long[] finv;
	

	public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	}
	
	static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	}

	static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	}

}

class FastScanner {
	private final InputStream in = System.in;
	private final byte[] buffer = new byte[1024];
	private int ptr = 0;
	private int buflen = 0;

	private boolean hasNextByte() {
		if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		}
		return true;
	}

	private int readByte() {
		if (hasNextByte())
			return buffer[ptr++];
		else
			return -1;
	}

	private static boolean isPrintableChar(int c) {
		return 33 <= c && c <= 126;
	}

	public boolean hasNext() {
		while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++;
		return hasNextByte();
	}

	public String next() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	public long nextLong() {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		}
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		}
	}

	public int nextInt() {
		long nl = nextLong();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	}

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

	public char[][] nextCharsHW(int H, int W) {
		char[][] chars = new char[H][W];
		for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		}
		return chars;
	}

	public int[][] nextIntsNM(int N, int M) {
		int[][] ints = new int[N][M];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		}
		return ints;
	}
} import java.io.IOException; IOException java.io import java.io.InputStream; InputStream java.io import java.io.PrintWriter; PrintWriter java.io import java.util.NoSuchElementException; NoSuchElementException java.util public class Main {

	static final int mod = 1000000007;
	static long[] fac;
	static long[] inv;
	static long[] finv;
	

	public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	}
	
	static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	}

	static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	}

} Main static final int mod = 1000000007; mod 1000000007 static long[] fac; fac static long[] inv; inv static long[] finv; finv public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	} main {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	} FastScanner sc = new FastScanner(); sc new FastScanner() PrintWriter out=new PrintWriter(System.out); out new PrintWriter(System.out) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int A = sc.nextInt(); A sc.nextInt() sc.nextInt sc int B = sc.nextInt(); B sc.nextInt() sc.nextInt sc if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		} N*A<B N*A N A B {
			out.println(N*A);
		} out.println(N*A) out.println out N*A N A {
			out.print(B);
		} out.print(B) out.print out B out.flush() out.flush out String[] args args static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	} calcNumOfCombinationInit {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	} fac=new long[N] fac new long[N] N inv=new long[N] inv new long[N] N finv=new long[N] finv new long[N] N fac[0]=1 fac[0] fac 0 1 fac[1]=1 fac[1] fac 1 1 finv[0]=1 finv[0] finv 0 1 finv[1]=1 finv[1] finv 1 1 inv[1]=1 inv[1] inv 1 1 for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		} int i=2; int i=2; i 2 i<N i N i++ i++ i {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		} {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		} fac[i]=fac[i-1]*i%mod fac[i] fac i fac[i-1]*i%mod fac[i-1]*i fac[i-1] fac i-1 i 1 i mod inv[i]=mod-inv[mod%i]*(mod/i)%mod inv[i] inv i mod-inv[mod%i]*(mod/i)%mod mod inv[mod%i]*(mod/i)%mod inv[mod%i]*(mod/i) inv[mod%i] inv mod%i mod i (mod/i) mod i mod finv[i]=finv[i-1]*inv[i]%mod finv[i] finv i finv[i-1]*inv[i]%mod finv[i-1]*inv[i] finv[i-1] finv i-1 i 1 inv[i] inv i mod int N N static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	} calcNumOfCombination {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	} if(n<r || n<0 || r<0) {
			return 0;
		} n<r || n<0 || r<0 n<r || n<0 || r<0 n<r n r n<0 n 0 r<0 r 0 {
			return 0;
		} return 0; 0 return fac[n]*(finv[r]*finv[n-r]%mod)%mod; fac[n]*(finv[r]*finv[n-r]%mod)%mod fac[n]*(finv[r]*finv[n-r]%mod) fac[n] fac n (finv[r]*finv[n-r]%mod) finv[r]*finv[n-r] finv[r] finv r finv[n-r] finv n-r n r mod mod int n n int r r class FastScanner {
	private final InputStream in = System.in;
	private final byte[] buffer = new byte[1024];
	private int ptr = 0;
	private int buflen = 0;

	private boolean hasNextByte() {
		if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		}
		return true;
	}

	private int readByte() {
		if (hasNextByte())
			return buffer[ptr++];
		else
			return -1;
	}

	private static boolean isPrintableChar(int c) {
		return 33 <= c && c <= 126;
	}

	public boolean hasNext() {
		while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++;
		return hasNextByte();
	}

	public String next() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	public long nextLong() {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		}
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		}
	}

	public int nextInt() {
		long nl = nextLong();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	}

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

	public char[][] nextCharsHW(int H, int W) {
		char[][] chars = new char[H][W];
		for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		}
		return chars;
	}

	public int[][] nextIntsNM(int N, int M) {
		int[][] ints = new int[N][M];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		}
		return ints;
	}
} FastScanner private final InputStream in = System.in; in System.in System System.in private final byte[] buffer = new byte[1024]; buffer new byte[1024] 1024 private int ptr = 0; ptr 0 private int buflen = 0; buflen 0 private boolean hasNextByte() {
		if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		}
		return true;
	} hasNextByte {
		if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		}
		return true;
	} if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		} ptr < buflen ptr buflen {
			return true;
		} return true; true {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		} ptr = 0 ptr 0 try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} IOException e {
				e.printStackTrace();
			} e.printStackTrace() e.printStackTrace e {
				buflen = in.read(buffer);
			} buflen = in.read(buffer) buflen in.read(buffer) in.read in buffer if (buflen <= 0) {
				return false;
			} buflen <= 0 buflen 0 {
				return false;
			} return false; false return true; true private int readByte() {
		if (hasNextByte())
			return buffer[ptr++];
		else
			return -1;
	} readByte {
		if (hasNextByte())
			return buffer[ptr++];
		else
			return -1;
	} if (hasNextByte())
			return buffer[ptr++];
		else
			return -1; hasNextByte() hasNextByte return buffer[ptr++]; buffer[ptr++] buffer ptr++ ptr return -1; -1 1 private static boolean isPrintableChar(int c) {
		return 33 <= c && c <= 126;
	} isPrintableChar {
		return 33 <= c && c <= 126;
	} return 33 <= c && c <= 126; 33 <= c && c <= 126 33 <= c 33 c c <= 126 c 126 int c c public boolean hasNext() {
		while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++;
		return hasNextByte();
	} hasNext {
		while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++;
		return hasNextByte();
	} while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++; hasNextByte() && !isPrintableChar(buffer[ptr]) hasNextByte() hasNextByte !isPrintableChar(buffer[ptr]) isPrintableChar(buffer[ptr]) isPrintableChar buffer[ptr] buffer ptr ptr++ ptr return hasNextByte(); hasNextByte() hasNextByte public String next() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	} next {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	} if (!hasNext())
			throw new NoSuchElementException(); !hasNext() hasNext() hasNext throw new NoSuchElementException(); new NoSuchElementException() StringBuilder sb = new StringBuilder(); sb new StringBuilder() int b = readByte(); b readByte() readByte while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		} isPrintableChar(b) isPrintableChar b {
			sb.appendCodePoint(b);
			b = readByte();
		} sb.appendCodePoint(b) sb.appendCodePoint sb b b = readByte() b readByte() readByte return sb.toString(); sb.toString() sb.toString sb public long nextLong() {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		}
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		}
	} nextLong {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		}
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		}
	} if (!hasNext())
			throw new NoSuchElementException(); !hasNext() hasNext() hasNext throw new NoSuchElementException(); new NoSuchElementException() long n = 0; n 0 boolean minus = false; minus false int b = readByte(); b readByte() readByte if (b == '-') {
			minus = true;
			b = readByte();
		} b == '-' b '-' {
			minus = true;
			b = readByte();
		} minus = true minus true b = readByte() b readByte() readByte if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		} b < '0' || '9' < b b < '0' b '0' '9' < b '9' b {
			throw new NumberFormatException();
		} throw new NumberFormatException(); new NumberFormatException() while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		} true {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		} if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			} '0' <= b && b <= '9' '0' <= b '0' b b <= '9' b '9' {
				n *= 10;
				n += b - '0';
			} n *= 10 n 10 n += b - '0' n b - '0' b '0' if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			} b == -1 || !isPrintableChar(b) b == -1 b -1 1 !isPrintableChar(b) isPrintableChar(b) isPrintableChar b {
				return minus ? -n : n;
			} return minus ? -n : n; minus ? -n : n minus -n n n {
				throw new NumberFormatException();
			} throw new NumberFormatException(); new NumberFormatException() b = readByte() b readByte() readByte public int nextInt() {
		long nl = nextLong();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	} nextInt {
		long nl = nextLong();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	} long nl = nextLong(); nl nextLong() nextLong if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException(); nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE nl < Integer.MIN_VALUE nl Integer.MIN_VALUE Integer Integer.MIN_VALUE nl > Integer.MAX_VALUE nl Integer.MAX_VALUE Integer Integer.MAX_VALUE throw new NumberFormatException(); new NumberFormatException() return (int) nl; (int) nl public double nextDouble() {
		return Double.parseDouble(next());
	} nextDouble {
		return Double.parseDouble(next());
	} return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next public char[][] nextCharsHW(int H, int W) {
		char[][] chars = new char[H][W];
		for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		}
		return chars;
	} nextCharsHW {
		char[][] chars = new char[H][W];
		for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		}
		return chars;
	} char[][] chars = new char[H][W]; chars new char[H][W] H W for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		} int i = 0; int i = 0; i 0 i < H i H i++ i++ i {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		} {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		} String str = next(); str next() next for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			} int j = 0; int j = 0; j 0 j < W j W j++ j++ j {
				chars[i][j] = str.charAt(j);
			} {
				chars[i][j] = str.charAt(j);
			} chars[i][j] = str.charAt(j) chars[i][j] chars[i] chars i j str.charAt(j) str.charAt str j return chars; chars int H H int W W public int[][] nextIntsNM(int N, int M) {
		int[][] ints = new int[N][M];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		}
		return ints;
	} nextIntsNM {
		int[][] ints = new int[N][M];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		}
		return ints;
	} int[][] ints = new int[N][M]; ints new int[N][M] N M for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		} {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		} for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			} int j = 0; int j = 0; j 0 j < M j M j++ j++ j {
				ints[i][j] = nextInt();
			} {
				ints[i][j] = nextInt();
			} ints[i][j] = nextInt() ints[i][j] ints[i] ints i j nextInt() nextInt return ints; ints int N N int M M public class Main {

	static final int mod = 1000000007;
	static long[] fac;
	static long[] inv;
	static long[] finv;
	

	public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	}
	
	static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	}

	static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	}

} public class Main {

	static final int mod = 1000000007;
	static long[] fac;
	static long[] inv;
	static long[] finv;
	

	public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	}
	
	static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	}

	static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	}

} Main
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.NoSuchElementException;

public class Main {

	static final int mod = 1000000007;
	static long[] fac;
	static long[] inv;
	static long[] finv;
	

	public static void main(String[] args) {

		FastScanner sc = new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int N = sc.nextInt();
		int A = sc.nextInt();
		int B = sc.nextInt();
		
		if(N*A<B) {
			out.println(N*A);
		}else {
			out.print(B);
		}
		
		out.flush();
	}
	
	static void calcNumOfCombinationInit(int N) {
		
		fac=new long[N];
		inv=new long[N];
		finv=new long[N];
		fac[0]=1;
		fac[1]=1;
		finv[0]=1;
		finv[1]=1;
		inv[1]=1;
		for(int i=2;i<N;i++) {
			fac[i]=fac[i-1]*i%mod;
			inv[i]=mod-inv[mod%i]*(mod/i)%mod;
			finv[i]=finv[i-1]*inv[i]%mod;
		}
		
	}

	static long calcNumOfCombination(int n, int r) {
		if(n<r || n<0 || r<0) {
			return 0;
		}
		return fac[n]*(finv[r]*finv[n-r]%mod)%mod;
	}

}

class FastScanner {
	private final InputStream in = System.in;
	private final byte[] buffer = new byte[1024];
	private int ptr = 0;
	private int buflen = 0;

	private boolean hasNextByte() {
		if (ptr < buflen) {
			return true;
		} else {
			ptr = 0;
			try {
				buflen = in.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (buflen <= 0) {
				return false;
			}
		}
		return true;
	}

	private int readByte() {
		if (hasNextByte())
			return buffer[ptr++];
		else
			return -1;
	}

	private static boolean isPrintableChar(int c) {
		return 33 <= c && c <= 126;
	}

	public boolean hasNext() {
		while (hasNextByte() && !isPrintableChar(buffer[ptr]))
			ptr++;
		return hasNextByte();
	}

	public String next() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = readByte();
		while (isPrintableChar(b)) {
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}

	public long nextLong() {
		if (!hasNext())
			throw new NoSuchElementException();
		long n = 0;
		boolean minus = false;
		int b = readByte();
		if (b == '-') {
			minus = true;
			b = readByte();
		}
		if (b < '0' || '9' < b) {
			throw new NumberFormatException();
		}
		while (true) {
			if ('0' <= b && b <= '9') {
				n *= 10;
				n += b - '0';
			} else if (b == -1 || !isPrintableChar(b)) {
				return minus ? -n : n;
			} else {
				throw new NumberFormatException();
			}
			b = readByte();
		}
	}

	public int nextInt() {
		long nl = nextLong();
		if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE)
			throw new NumberFormatException();
		return (int) nl;
	}

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

	public char[][] nextCharsHW(int H, int W) {
		char[][] chars = new char[H][W];
		for (int i = 0; i < H; i++) {
			String str = next();
			for (int j = 0; j < W; j++) {
				chars[i][j] = str.charAt(j);
			}
		}
		return chars;
	}

	public int[][] nextIntsNM(int N, int M) {
		int[][] ints = new int[N][M];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				ints[i][j] = nextInt();
			}
		}
		return ints;
	}
}
