
	//		HYSO SERIOUS? WHY SO SERIOUS                            RIOUS? WHY SO SERIOUS? WHYSO SERIO
	//		 ERIOUS? WHY SO SERIOUS ? WHY                          WHY SO SERIOUS? WHY SOSERIOUSWHYS
	//		       OSERIOUS? WHY SO SERIOU         SERIOUS        ERIOUS? WHY SO SERIOUS? WHYS
	//		          WHY SO SERIOUS? WHY SOSERIOUS? WHYSOSERIOUS? WHY SO SERIOUS?WHY SO SE
	//		           ERIOUS? WHY SO SERIOUS? WHY SO SERIOUS? WHY SO SERIOUS? WHY SOSERIO
	//		           WHY SO SERIOUS? WHY SO SERIOUS? WHY SO SERIOUS? WHY SO SERIOUS? WH
	//		            SERIOUS?WHYSO SERIOUS? WHY SO SERIOUS? WHY SO SERIOUS? WHYSO SE
	//		              ?WHYSOSERIOUS?WHY SO SERIOUS? WHY SO SERIOUS?WHYSO SERIOUS?
	//		                           OSERIOUS? WHY SO SERIOUS?WHYSOSER
	//		                                 HYSOSERIOUS?WHYSOSERI
	//		                                     SOSERIOUS?W
	//		                                         SER
	//		                                          W


	#include 	<ext/pb_ds/assoc_container.hpp> 
	#include 	<ext/pb_ds/tree_policy.hpp> 
	#include 	<iostream>
	#include 	<queue>
	#include 	<tuple>
	#include 	<vector>
	#include	<bits/stdc++.h>
	#include	<algorithm>
	#include 	<cmath>
	#include 	<map>
	#include 	<string>
	#include 	<iomanip> 
	#include 	<ctype.h>
	#define 	ll  long long int
	#define		read(a) long long int a; cin>>a;
	#define 	readstr(s) string s; cin>>s;
	#define 	readc(c) char c; cin>>c;
	#define 	readarr(a,l) long long int a[l]={0}; for(ll i=0;i<l;i++) cin>>a[i];
	#define 	loop(i,a,b) for(ll i=a;i<b;i++)
	#define 	rloop(i,a,b) for(ll i=a;i>b;i--)
	#define 	loopchar() for(char c='a';c<='z';c++)
	#define 	printarr(a, n) fori (i, 1, n) cout << a[i] << " "; cout << endl;
	#define		printv(v) for (int i: v) cout << i << " "; cout << endl;
	#define 	loopitr(vec) for(auto itr=vec.begin();itr!=vec.end();itr++)
	#define 	ff first
	#define 	ss second
	#define 	readmtrx(i,j,a,b) ll arr[a][b]={0};for(ll i=0;i<a;i++)for(ll j=0;j<b;j++) cin>>arr[i][j];
	#define 	all(a) a.begin(), a.end()
	#define 	yes cout <<"YES"<<endl;
	#define 	no cout <<"NO"<<endl;
	#define 	sc(x) cout << (#x) << " is " << (x) << endl;
	#define 	fast ios_base::sync_with_stdio(false);cin.tie(0);
	#define 	pb(p) push_back(p)
	#define 	mp make_pair
	#define 	fsort(vec) sort(vec.begin(),vec.end())
	#define 	rsort(vec) sort(vec.begin(),vec.end(),compare)
	#define 	Endl endl
	#define 	ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> 
	#define 	roundoff std::cout << std::setprecision(15)
	#define 	inf 9223372036854775807
	#define 	infn -9223372036854775807
	#define 	pi 3.14159265358979323846
	const 		int mod = 1e9+7; 
	#define 	REVERSE(vec) reverse(vec.begin(),vec.end())
	using 		namespace __gnu_pbds; 
	using 		namespace std;

	ll gcd (ll a, ll b) { return b ? gcd (b, a % b) : a; }
	ll lcm (ll a, ll b) { return a / gcd(a, b) * b; }

	//code start from here 

	int main() {
		fast;
		#ifndef ONLINE_JUDGE
	 	 	freopen("input.txt","r",stdin);
		  	freopen("output.txt","w",stdout);
		#endif
		read(a)
		readstr(s)
		vector<pair<char,ll>>vec;
		map<char,ll>mp1;
		loop(j,0,s.length()){
			vec.pb(mp(s[j],j+1));
			mp1[s[j]]++;
		}
		string g=s;
		sort(all(s));
		fsort(vec);
		bool flag=false;
		if(g!=s){
			cout<<"YES"<<endl;
			loop(j,0,s.length()){
				if(g[j]>g[j+1]) {cout<<j+1<<" "<<j+2<<endl;flag=true;break;}
			}
			}
		else cout<<"NO"<<endl;
		if(!flag) cout<<"NO"<<endl;
		return 0;
	}

	//ends here 