#include <bits/stdc++.h>
using namespace std;
string easyOrHard(int n, vector<char> a) {
  int result = a[0] - '0';
  if (result > 0) return "HARD";
  for (int i = 1; i < n; ++i) {
    result += a[i] - '0';
    if (result > 0) return "HARD";
  }
  return "EASY";
}
int howManyYears(int a, int b) {
  int i = 0;
  while (true) {
    if (a > b)
      break;
    else {
      a *= 3;
      b *= 2;
      ++i;
    }
  }
  return i;
}
void beautyMatrix() {
  int rowCount = 0;
  int columnCount = 0;
  vector<vector<int>> beauty(5, vector<int>(5));
  for (int i = 0; i < 5; ++i) {
    for (int j = 0; j < 5; ++j) {
      int cell;
      cin >> cell;
      if (cell) {
      }
      beauty[i][j] = cell;
    }
  }
  bool rowBreak = false;
  rowCount = 0;
  for (; rowCount < 5;) {
    columnCount = 0;
    for (; columnCount < 5;) {
      if (beauty[rowCount][columnCount] == 1) {
        rowBreak = true;
        break;
      } else {
        columnCount++;
      }
    }
    if (rowBreak) {
      break;
    }
    rowCount++;
  }
  cout << "rowCount = " << rowCount << endl;
  cout << "columnCount = " << columnCount << endl;
  int distance = 0;
  distance += abs(rowCount - 2);
  distance += abs(columnCount - 2);
  cout << distance << endl;
}
void wayTooLongWords() {
  int n;
  cin >> n;
  vector<string> s;
  for (int i = 0; i < n; ++i) {
    string aLine;
    cin >> aLine;
    s.push_back(aLine);
  }
  for (auto each : s) {
    if (each.size() > 10) {
      int trimedSize = each.size() - 2;
      string trimedSizeString = to_string(trimedSize);
      string resultString;
      resultString.push_back(each.front());
      resultString += trimedSizeString;
      resultString.push_back(each.back());
      cout << resultString << endl;
    } else {
      cout << each << endl;
    }
  }
}
void PetyaAndStrings() {
  string A;
  cin >> A;
  string B;
  cin >> B;
  transform(A.begin(), A.end(), A.begin(), ::toupper);
  transform(B.begin(), B.end(), B.begin(), ::toupper);
  if (A < B) cout << "-1" << endl;
  if (A > B) cout << "1" << endl;
  if (A == B) cout << "0" << endl;
}
void Right_LeftCipher() {
  string inputString;
  cin >> inputString;
  int n = inputString.size();
  string resultString;
  int center = (n - 1) / 2;
  resultString.push_back(inputString[center]);
  for (int step = 1; step <= n / 2; ++step) {
    if (center + step < n) {
      resultString.push_back(inputString[center + step]);
    }
    if (center - step >= 0) {
      resultString.push_back(inputString[center - step]);
    }
  }
  cout << resultString;
}
void FriendsMeeting() {
  int left, right, distance;
  cin >> left;
  cin >> right;
  distance = abs(right - left);
  if (distance == 0) {
    cout << 0 << endl;
    return;
  }
  int steps = 0;
  int answer = 0;
  while (distance > 1) {
    steps++;
    answer += steps * 2;
    distance -= 2;
  }
  answer += (steps + 1) * distance;
  cout << answer;
}
void Triangularnumbers() {
  int given;
  cin >> given;
  int doubleGiven = 2 * given;
  int floor = sqrt(doubleGiven);
  int result = floor * (floor + 1) / 2;
  if (result == given) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
}
void DefiniteGame() {
  int a;
  cin >> a;
  if (a != 2) {
    cout << 1;
  } else {
    cout << 2;
  }
}
void HelpfulMaths() {
  string given;
  cin >> given;
  map<int, int> counter;
  for (auto each : given) {
    if (each == '+') {
      counter['+' - '0']++;
    } else if (each == '1') {
      counter['1' - '0']++;
    } else if (each == '2') {
      counter['2' - '0']++;
    } else if (each == '3') {
      counter['3' - '0']++;
    }
  }
  while (counter['+' - '0'] > 0 || counter['1' - '0'] > 0 ||
         counter['2' - '0'] > 0 || counter['3' - '0'] > 0) {
    if (counter['1' - '0'] > 0) {
      cout << 1;
      counter['1' - '0']--;
      if (counter['+' - '0'] > 0) {
        cout << '+';
        counter['+' - '0']--;
      }
      continue;
    }
    if (counter['2' - '0'] > 0) {
      cout << 2;
      counter['2' - '0']--;
      if (counter['+' - '0'] > 0) {
        cout << '+';
        counter['+' - '0']--;
      }
      continue;
    }
    if (counter['3' - '0'] > 0) {
      cout << 3;
      counter['3' - '0']--;
      if (counter['+' - '0'] > 0) {
        cout << '+';
        counter['+' - '0']--;
      }
      continue;
    }
  }
}
void GravityFlip() {
  int n;
  cin >> n;
  vector<int> s;
  for (int i = 0; i < n; ++i) {
    int element;
    cin >> element;
    s.push_back(element);
  }
  sort(s.begin(), s.end());
  for (int i = 0; i < n; ++i) {
    cout << s[i] << " ";
  }
}
int sum_sums_prefixSums(vector<int> a) {
  int n = a.size();
  int answer = 0;
  for (int L = 0; L <= n; L++) {
    vector<int> prefixSums;
    prefixSums.push_back(0);
    for (int R = L; R < n; R++) {
      prefixSums.push_back(prefixSums.back() + a[R]);
      answer += prefixSums.back();
    }
  }
  return answer;
}
int sum_sums(vector<int> a) {
  int n = a.size();
  int answer = 0;
  for (int L = 0; L < n; L++) {
    for (int R = L; R < n; R++) {
      int sum = 0;
      for (int i = L; i <= R; ++i) {
        sum += a[i];
      }
      answer += sum;
    }
  }
  return answer;
}
void KefaandFirstSteps() {
  int n;
  cin >> n;
  vector<int> s;
  for (int i = 0; i < n; ++i) {
    int ele;
    cin >> ele;
    s.push_back(ele);
  }
  int longestCounter = 1;
  for (int L = 0; L < n; ++L) {
    int eachCounter = 1;
    for (int R = L + 1; R < n; ++R) {
      if (s[R] >= s[R - 1]) {
        eachCounter++;
      } else {
        break;
      }
    }
    longestCounter = max(longestCounter, eachCounter);
  }
  cout << longestCounter;
}
void EvenOdds() {
  long long n, k;
  vector<string> s;
  for (long long i = 0; i < 2; ++i) {
    string aLine;
    cin >> aLine;
    s.push_back(aLine);
  }
  n = stoll(s[0]);
  k = stoll(s[1]);
  bool isEven = (n % 2 == 0);
  bool startFromLeft = false;
  long long stepEnding = 0;
  long long answer = 0;
  if ((isEven && k <= n / 2) || (!isEven && k <= n / 2 + 1)) {
    startFromLeft = true;
    answer = 1;
  } else {
    startFromLeft = false;
    answer = 2;
  }
  if (startFromLeft && !isEven) {
    stepEnding = k - 1;
  } else if (startFromLeft && isEven) {
    stepEnding = k - 1;
  } else if (!startFromLeft && isEven) {
    stepEnding = k - n / 2 - 1;
  } else if (!startFromLeft && !isEven) {
    stepEnding = k - n / 2 - 2;
  }
  answer += 2 * (stepEnding);
  cout << answer << endl;
}
void IWannaBetheGuy() {
  int totalLevelCount, Xposition, Yposition;
  vector<int> firstLine, secondLine;
  cin >> totalLevelCount;
  int firstLevelCount;
  cin >> firstLevelCount;
  while (firstLevelCount > firstLine.size()) {
    int element;
    cin >> element;
    firstLine.push_back(element);
  }
  int secondLevelCount;
  cin >> secondLevelCount;
  while (secondLevelCount > secondLine.size()) {
    int element;
    cin >> element;
    secondLine.push_back(element);
  }
  map<int, bool> allLevelMap;
  for (auto each : firstLine) {
    allLevelMap[each] = true;
  }
  for (auto each : secondLine) {
    allLevelMap[each] = true;
  }
  if (allLevelMap.size() == totalLevelCount) {
    cout << "I become the guy.";
  } else {
    cout << "Oh, my keyboard!";
  }
}
enum direction {
  upward,
  downward,
  leftward,
  rightward,
  leftup,
  leftdown,
  rightup,
  rightdown
};
bool isMoveInsideBoard(int boardLength, pair<int, int> king, direction direct) {
  int limit = boardLength - 1;
  if (direct == upward) {
    return king.second - 1 >= 0;
  }
  if (direct == downward) {
    return king.second + 1 <= limit;
  }
  if (direct == leftward) {
    return king.first - 1 >= 0;
  }
  if (direct == rightward) {
    return king.first + 1 <= limit;
  }
  if (direct == leftup) {
    return king.first - 1 >= 0 && king.second - 1 >= 0;
  }
  if (direct == leftdown) {
    return king.first - 1 >= 0 && king.second + 1 <= limit;
  }
  if (direct == rightup) {
    return king.first + 1 < limit && king.second - 1 >= 0;
  }
  if (direct == rightdown) {
    return king.first + 1 < limit && king.second + 1 < limit;
  }
}
bool isMoveSafe(int boardLength, pair<int, int> queen, pair<int, int> king,
                direction direct) {
  bool columnSafe, rowSafe, one_three_Safe, two_four_Safe = false;
  columnSafe = queen.first != king.first;
  rowSafe = queen.second != king.second;
  for (int steps = 1; steps <= boardLength - 1; ++steps) {
    if (!(king.first == queen.first - steps &&
          king.second == queen.second + steps) &&
        !(king.first == queen.first + steps &&
          king.second == queen.second - steps)) {
      one_three_Safe = true;
    }
    if (!(king.first == queen.first - steps &&
          king.second == queen.second - steps) &&
        !(king.first == queen.first + steps &&
          king.second == queen.second + steps)) {
      two_four_Safe = true;
    }
  }
  return columnSafe && rowSafe && one_three_Safe && two_four_Safe;
}
bool dfsKingEscape(vector<vector<bool>> board, pair<int, int> queen,
                   pair<int, int> king, pair<int, int> target) {
  if (king.first == target.first && king.second == target.second) {
    return true;
  }
  return false;
}
void KingEscape() {
  int boardLength;
  cin >> boardLength;
  pair<int, int> queenPosition;
  cin >> queenPosition.first >> queenPosition.second;
  pair<int, int> kingPosition;
  cin >> kingPosition.first >> kingPosition.second;
  pair<int, int> targetPosition;
  cin >> targetPosition.first >> targetPosition.second;
  cout << " pause and check " << endl;
  vector<vector<bool>> board(boardLength, vector<bool>(false));
  if (dfsKingEscape(board, queenPosition, kingPosition, targetPosition)) {
    cout << "YES";
  } else {
    cout << "NO";
  }
}
bool is_lucky(int x) {
  while (x > 0) {
    if (!(x % 10 == 4 || x % 10 == 7)) {
      return false;
    }
    x /= 10;
  }
  return true;
}
bool is_almost_lucky(int n) {
  for (int b = 1; b <= n; b++) {
    if (n % b == 0) {
      if ((is_lucky(b))) {
        return true;
      }
    }
  }
  return false;
}
void StringTask() {
  string given, answer;
  cin >> given;
  int n = given.size();
  for (int i = 0; i < n; ++i) {
    if (given[i] == 'A' || given[i] == 'a' || given[i] == 'O' ||
        given[i] == 'o' || given[i] == 'Y' || given[i] == 'y' ||
        given[i] == 'E' || given[i] == 'e' || given[i] == 'U' ||
        given[i] == 'u' || given[i] == 'I' || given[i] == 'i') {
    } else {
      answer.push_back('.');
      answer.push_back(tolower(given[i]));
    }
  }
  cout << answer;
}
int binarySearch_HitAndMiss2(vector<long long> given, long long l, long long h,
                             long long t) {
  if (h > given.size()) {
    h = given.size() - 1;
  }
  l = l >= 0 ? l : 0;
  int m = l + (h - l) / 2;
  int p = 0;
  if (t < given[l]) return p;
  while (true) {
    if (m == l && t < given[h]) {
      p = l + 1;
      break;
    }
    if (m == l && t >= given[h]) {
      p = h + 1;
      break;
    }
    if (m > l) {
      if (given[m] == t) {
        while (given[m + 1] == given[m]) {
          ++m;
        }
        p = m + 1;
        break;
      } else if (given[m] > t) {
        h = m;
        m = l + (h - l) / 2;
      } else if (given[m] < t) {
        l = m;
        m = l + (h - l) / 2;
      }
    }
  }
  return p;
}
void Interestingdrink() {
  long long shopTotal;
  cin >> shopTotal;
  vector<long long> shopPrices;
  for (long long i = 0; i < shopTotal; ++i) {
    long long single;
    cin >> single;
    shopPrices.push_back(single);
  }
  long long dayTotal;
  cin >> dayTotal;
  vector<long long> budgets;
  for (long long i = 0; i < dayTotal; ++i) {
    int single;
    cin >> single;
    budgets.push_back(single);
  }
  vector<long long> shopPrices2;
  shopPrices2 = shopPrices;
  sort(shopPrices2.begin(), shopPrices2.end());
  vector<long long> answers1;
  for (long long i = 0; i < dayTotal; ++i) {
    long long target = budgets[i];
    if (target < shopPrices2[0]) {
      answers1.push_back(0);
    } else if (target >= shopPrices2.back()) {
      answers1.push_back(shopPrices2.size());
    } else {
      int result = binarySearch_HitAndMiss2(shopPrices2, 0,
                                            shopPrices2.size() - 1, target);
      answers1.push_back(result);
    }
  }
  for (long long k = 0; k < answers1.size(); ++k) {
    cout << answers1[k] << endl;
  }
}
void BitPlusPlus() {
  int n;
  cin >> n;
  vector<string> given;
  int mmCounter = 0;
  int ppCounter = 0;
  for (int i = 0; i < n; ++i) {
    string aLine;
    cin >> aLine;
    given.push_back(aLine);
    size_t foundPP = aLine.find("++");
    size_t foundMM = aLine.find("--");
    if (foundMM != std::string::npos) {
      mmCounter++;
    }
    if (foundPP != std::string::npos) {
      ppCounter++;
    }
  }
  int answer = ppCounter - mmCounter;
  cout << answer;
}
void BeautifulYear() {
  int given;
  cin >> given;
  while (given <= 9999) {
    ++given;
    vector<int> digits;
    int givenClone = given;
    while (givenClone > 0) {
      int digit = givenClone % 10;
      digits.push_back(digit);
      givenClone /= 10;
    }
    set<int> counter;
    for (auto each : digits) {
      counter.insert(each);
    }
    if (counter.size() == 4) {
      cout << given;
      return;
    }
  }
}
void Supermarket() {
  int totalMarkets;
  int totalApple;
  cin >> totalMarkets >> totalApple;
  vector<pair<int, int>> prices;
  for (int i = 0; i < totalMarkets; ++i) {
    int marketID, priceTag;
    cin >> marketID >> priceTag;
    pair<int, int> price(marketID, priceTag);
    prices.push_back(price);
  }
  long double minUnitPrice = (long double)INT_MAX;
  int minIndex;
  for (int i = 0; i < prices.size(); ++i) {
    long double temp =
        (long double)(prices[i].first) / (long double)(prices[i].second);
    if (temp <= minUnitPrice) {
      minIndex = i;
      minUnitPrice = temp;
    }
  }
  minUnitPrice =
      (long double)(totalApple * (long double)(prices[minIndex].first) /
                    (long double)(prices[minIndex].second));
  cout << setprecision(8) << minUnitPrice << endl;
}
int main() {
  Supermarket();
  return 0;
}
int find_position_of_last_not_exceeding(vector<int> a, int target) {
  int l = 0;
  int h = a.size() - 1;
  int answer = -1;
  while (l <= h) {
    int m = l + (h - l) / 2;
    if (a[m] <= target) {
      answer = m;
      l = m + 1;
    } else if (a[m] > target) {
      h = m - 1;
    }
  }
  return answer;
}
void Interestingdrink2() {
  int shopTotal;
  cin >> shopTotal;
  vector<int> shopPrices;
  for (int i = 0; i < shopTotal; ++i) {
    int single;
    cin >> single;
    shopPrices.push_back(single);
  }
  sort(shopPrices.begin(), shopPrices.end());
  int dayTotal;
  cin >> dayTotal;
  for (int i = 0; i < dayTotal; ++i) {
    int target;
    cin >> target;
    cout << 1 + find_position_of_last_not_exceeding(shopPrices, target) << "\n";
  }
}
int main3() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  Interestingdrink2();
  return 0;
}
void StringTask2() {
  string given, answer;
  cin >> given;
  int n = given.size();
  for (int i = 0; i < n; ++i) {
    string vowels = "aoyeui";
    bool flag = false;
    for (auto each : vowels) {
      if (each == tolower(given[i])) {
        flag = true;
      }
    }
    if (!flag) {
      cout << "." << (char)tolower(given[i]);
    }
  }
}
int main4() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  StringTask2();
  return 0;
}
