func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline T BM(T p, T e, T M) {     long long int ret = 1;     for (; e > 0; e >>= 1) {       if (e & 1) ret = (ret * p) % M;       p = (p * p) % M;     }     return (T)ret;   }   template <class T>   inline T gcd(T a, T b) {     if (b == 0) return a;     return gcd(b, a % b);   }   template <class T>   inline T mdINV(T a, T M) {     return BM(a, M - 2, M);   }   template <class T>   inline T PW(T p, T e) {     long long int ret = 1;     for (; e > 0; e >>= 1) {       if (e & 1) ret = (ret * p);       p = (p * p);     }     return (T)ret;   }   template <class T>   string NTS(T Number) {     stringstream ss;     ss << Number;     return ss.str();   }   template <class T>   T stringtonumber(const string &Text) {     istringstream ss(Text);     T result;     return ss >> result ? result : 0;   }   template <class T>   bool ISLEFT(T a, T b, T c) {     if (((a.first.first - b.first.first) * (b.second.second - c.second.second) -          (b.first.first - c.first.first) * (a.second.second - b.second.second)) <         0.0)       return 1;     else       return 0;   }   int main() {     int n;     scanf( %d , &n);     string a[n + 2];     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     for (int i = n - 1; i >= 1; i--) {       string s;       int l = a[i + 1].size();       int l1 = a[i].size();       int first = 0;       s +=  # ;       bool fl = 0;       for (int j = 1; j <= min(l - 1, l1 - 1); j++) {         if (a[i][j] < a[i + 1][j]) fl = 1;         if (a[i][j] > a[i + 1][j]) {           break;         }         s += a[i][j];       }       if (fl)         a[i] = a[i];       else         a[i] = s;     }     for (int i = 1; i <= n; i++) cout << a[i] << endl;     return 0;   }   