#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <cstring>
#include <numeric>
#include <algorithm>
#include <functional>
#include <array>
#include <map>
#include <queue>
#include <limits.h>
#include <set>
#include <stack>
#include <random>
#include <complex>
#include <unordered_map>
#define rep(i,s,n) for(int i = (s); (n) > i; i++)
#define REP(i,n) rep(i,0,n)
#define RANGE(x,a,b) ((a) <= (x) && (x) < (b))
#define DUPLE(a,b,c,d) (RANGE(a,c,d) || RANGE(b,c,d) || RANGE(c,a,b) || RANGE(d,a,b))
#define INCLU(a,b,c,d) (RANGE(a,c,d) && (b,c,d))
#define PW(x) ((x)*(x))
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define MODU 1000000007LL
#define bitcheck(a,b)   ((a >> b) & 1)
#define bitset(a,b)      ( a |= (1 << b))
#define bitunset(a,b)    (a &= ~(1 << b))
#define MP(a,b) make_pair((a),(b))
#define Manh(a,b) (abs((a).first-(b).first) + abs((a).second - ((b).second))
#define pritnf printf
#define scnaf scanf
#define itn int
#define PI 3.141592653589


#define izryt bool
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
template<typename A, size_t N, typename T>
void Fill(A(&array)[N], const T &val) {
	std::fill((T*)array, (T*)(array + N), val);
}
pll Dir[8] = { //移動
	{ 0 ,1 },{ -1 ,0 },{ 1 ,0 },{ 0 ,-1 },
	{ 1 ,1 },{ 1 ,-1 },{ -1 ,1 },{ -1 ,-1 }
};

//[a, b)
#define Getsum(ar, a,b) (ar[b] - ar[a])
#define INF 10000000000000000LL

struct Edge {
	ll from, to;
	ll w;
};
//typedef vector<vector<Edge>> Graph;
//template<typename T>
//class ScapegoatTree_Leaf {
//	struct Node {
//		int range[2]; // [range[0], range[1])
//		T val;
//		const T id = T();
//		Node *p = NULL, *l = NULL, *r = NULL;
//		bool removed = false, leaf;
//		int sz = 1, dc = 0;
//
//		Node(Node* par, int rangel, int ranger, T _val) :leaf(false), sum(_val), val(_val), p(par) { range[0] = rangel, range[1] = ranger; }
//		Node(Node* par, int t, T _val) :leaf(true), sum(_val), val(_val), p(par) { range[0] = t, range[1] = t + 1; }
//		void upd() {
//			sz = 1;
//			dc = removed;
//			sum = id;
//			if (l != NULL) {
//				sz += l->sz;
//				dc += l->dc;
//				sum = sum + l->sum;
//			}
//			if (!removed)sum = sum + val;
//			if (r != NULL) {
//				sz += r->sz;
//				dc += r->dc;
//				sum = sum + r->sum;
//			}
//		}
//		int size() {
//			return sz - dc;
//		}
//	};
//public:
//
//	Node* root = NULL;
//
//	void updpath(Node* node) {
//		Node* cur = node;
//		while (cur != NULL) {
//			cur->upd();
//			cur = cur->p;
//		}
//	}
//
//	int depth(Node* node) {
//
//	}
//
//	Node* rebuild() {
//
//	}
//
//	Node* search(int t, bool b = false) {
//		if (root == NULL) return NULL;
//
//		Node* cur = root;
//
//		while (!cur->leaf) {
//			if (cur->l->range[1] > t) {
//				cur = cur->l;
//			}
//			else if (cur->l->range[1] <= t) {
//				cur = cur->r;
//			}
//		}
//		if (cur->t == t) return cur;
//		else return b ? cur : NULL;
//	}
//
//	Node* insert(int t, T val) {
//		if (root == NULL) {
//			return root = new Node(NULL, t, val);
//		}
//
//		Node* node = search(t, true);
//
//		if (node->range[0] == t) {
//			if (node->removed)
//				node->removed = false, node->val = val;
//			return node;
//		}
//		if (node->range[0] > t) {
//			Node*  inter = new Node(node->p, node->range[0], t + 1), leaf = new Node(inter, t, val);
//			node->p = inter;
//			inter->l = node;
//			inter->r = leaf;
//			return leaf;
//		}
//		if (node->range[0] < t) {
//			Node*  inter = new Node(node->p, t, node->range[0] + 1), leaf = new Node(inter, t, val);
//			node->p = inter;
//			inter->l = leaf;
//			inter->r = node;
//			return leaf;
//		}
//	}
//
//};


signed main(void) {

	int a, b, c;

	cin >> a >> b >> c;

	cout << min(c, b / a) << endl;;

	return 0;
}

Measured memory_bytes: 256