#include <bits/stdc++.h>
long long int ciel(double a) {
  long long int ret = a;
  if (a - ret > 0.0000000001) ret++;
  return ret;
}
long long int gcd(long long int a, long long int b) {
  if (a < b) return gcd(b, a);
  if (a % b == 0) return b;
  return gcd(b, a % b);
}
long long int lcm(long long int a, long long int b) {
  return (a * (b / gcd(a, b)));
}
long long int pow(long long int n, long long int p) {
  if (p == 0) return 1;
  if (n <= 1) return n;
  long long int res = 1;
  while (p) {
    if (p & 1) res = ((res * n) % 1000000007);
    n = ((n * n) % 1000000007);
    p /= 2;
  }
  return res;
}
double fgcd(double a, double b) {
  if (fabs(a) < fabs(b)) return fgcd(b, a);
  if (fabs(b) < 0.0001) return a;
  return fgcd(b, fmod(a, b));
}
using namespace std;
int ar[1000] = {0};
bool islucky(string second) {
  int n = second.length();
  for (int i = 0; i < n; i++) {
    if (second[i] == '4' || second[i] == '7') {
      ;
    } else {
      return false;
    }
  }
  return true;
}
int main(int argc, char const *argv[]) {
  int n;
  string second;
  cin >> n;
  cin >> second;
  if (n == 24) {
    if (second[0] > '2') {
      second[0] = '1';
    }
    if (second[0] == '2') {
      if (second[1] > '3') {
        second[1] = '3';
      }
    }
    if (second[3] > '5') {
      second[3] = '5';
    }
  } else {
    if (second[0] == '0') {
      if (second[1] == '0') {
        second[1] = '1';
      }
    }
    if (second[0] > '1' || second[1] > '2') {
      if (second[1] == '0') {
        second[0] = '1';
        if (second[1] > '1')
          second[1] = '1';
        else {
          ;
        }
      } else {
        second[0] = '0';
      }
    } else if (second[0] == '1' && second[1] > '2') {
      second[0] = '0';
    }
    if (second[1] == '0') {
      second[0] = '1';
    }
    if (second[3] > '5') {
      second[3] = '5';
    }
  }
  cout << second << endl;
  return 0;
}
