3. What will be the output of the following C# code snippet using Rabin Karp to find pattern "abc" in text "ababc"?
string text = "ababc";
string pattern = "abc";
List<int> matches = RabinKarpSearch(text, pattern);
Console.WriteLine(string.Join(",", matches));
List<int> RabinKarpSearch(string txt, string pat) {
int baseVal = 256, prime = 101;
int m = pat.Length, n = txt.Length;
int patHash = 0, txtHash = 0, h = 1;
List<int> result = new List<int>();
for (int i = 0; i < m - 1; i++) h = (h * baseVal) % prime;
for (int i = 0; i < m; i++) {
patHash = (baseVal * patHash + pat[i]) % prime;
txtHash = (baseVal * txtHash + txt[i]) % prime;
}
for (int i = 0; i <= n - m; i++) {
if (patHash == txtHash) {
bool match = true;
for (int j = 0; j < m; j++) {
if (txt[i + j] != pat[j]) {
match = false;
break;
}
}
if (match) result.Add(i);
}
if (i < n - m) {
txtHash = (baseVal * (txtHash - txt[i] * h) + txt[i + m]) % prime;
if (txtHash < 0) txtHash += prime;
}
}
return result;
}