Pólya urn flip and roll












12












$begingroup$


Problem statement



Pólya is playing about with his urn again and he wants you to help him calculate some probabilities.



In this urn experiment Pólya has an urn which initially contains 1 red and 1 blue bead.



For every iteration, he reaches in and retrieves a bead, then inspects the colour and places the bead back in the urn.



He then flips a fair coin, if the coin lands heads he will insert a fair 6 sided die roll amount of the same coloured bead into the urn, if it lands tails he will remove half the number of the same colored bead from the urn (Using integer division - so if the number of beads of the selected colour is odd he will remove (c-1)/2 where c is the number of beads of that colour)



Given an integer n ≥ 0 and a decimal r > 0, give the probability to 2 decimal places that the ratio between the colours of beads after n iterations is greater than or equal to r in the shortest number of bytes.



An example set of iterations:



Let (x, y) define the urn such that it contains x red beads and y blue beads.



Iteration    Urn       Ratio
0 (1,1) 1
1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4
2 (5,1) 5 //Blue bead retrieved, coin flip tails
3 (3,1) 3 //Red bead retrieved, coin flip tails
4 (3,4) 1.333... //Blue bead retrieved, coin flip heads, die roll 3


As can be seen the Ratio r is always ≥ 1 (so it's the greater of red or blue divided by the lesser)



Test cases:



Let F(n, r) define application of the function for n iterations and a ratio of r



F(0,5) = 0.00
F(1,2) = 0.50
F(1,3) = 0.42
F(5,5) = 0.28
F(10,4) = 0.31
F(40,6.25) = 0.14


This is code golf, so the shortest solution in bytes wins.










share|improve this question









New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    I feel like there is a formula for this...
    $endgroup$
    – Embodiment of Ignorance
    yesterday










  • $begingroup$
    Something to do with beta binomials maybe, but it might be longer to write that out
    $endgroup$
    – Expired Data
    yesterday










  • $begingroup$
    depends on the language; R and Mathematica might be able to do it efficiently.
    $endgroup$
    – Giuseppe
    yesterday
















12












$begingroup$


Problem statement



Pólya is playing about with his urn again and he wants you to help him calculate some probabilities.



In this urn experiment Pólya has an urn which initially contains 1 red and 1 blue bead.



For every iteration, he reaches in and retrieves a bead, then inspects the colour and places the bead back in the urn.



He then flips a fair coin, if the coin lands heads he will insert a fair 6 sided die roll amount of the same coloured bead into the urn, if it lands tails he will remove half the number of the same colored bead from the urn (Using integer division - so if the number of beads of the selected colour is odd he will remove (c-1)/2 where c is the number of beads of that colour)



Given an integer n ≥ 0 and a decimal r > 0, give the probability to 2 decimal places that the ratio between the colours of beads after n iterations is greater than or equal to r in the shortest number of bytes.



An example set of iterations:



Let (x, y) define the urn such that it contains x red beads and y blue beads.



Iteration    Urn       Ratio
0 (1,1) 1
1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4
2 (5,1) 5 //Blue bead retrieved, coin flip tails
3 (3,1) 3 //Red bead retrieved, coin flip tails
4 (3,4) 1.333... //Blue bead retrieved, coin flip heads, die roll 3


As can be seen the Ratio r is always ≥ 1 (so it's the greater of red or blue divided by the lesser)



Test cases:



Let F(n, r) define application of the function for n iterations and a ratio of r



F(0,5) = 0.00
F(1,2) = 0.50
F(1,3) = 0.42
F(5,5) = 0.28
F(10,4) = 0.31
F(40,6.25) = 0.14


This is code golf, so the shortest solution in bytes wins.










share|improve this question









New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    I feel like there is a formula for this...
    $endgroup$
    – Embodiment of Ignorance
    yesterday










  • $begingroup$
    Something to do with beta binomials maybe, but it might be longer to write that out
    $endgroup$
    – Expired Data
    yesterday










  • $begingroup$
    depends on the language; R and Mathematica might be able to do it efficiently.
    $endgroup$
    – Giuseppe
    yesterday














12












12








12


4



$begingroup$


Problem statement



Pólya is playing about with his urn again and he wants you to help him calculate some probabilities.



In this urn experiment Pólya has an urn which initially contains 1 red and 1 blue bead.



For every iteration, he reaches in and retrieves a bead, then inspects the colour and places the bead back in the urn.



He then flips a fair coin, if the coin lands heads he will insert a fair 6 sided die roll amount of the same coloured bead into the urn, if it lands tails he will remove half the number of the same colored bead from the urn (Using integer division - so if the number of beads of the selected colour is odd he will remove (c-1)/2 where c is the number of beads of that colour)



Given an integer n ≥ 0 and a decimal r > 0, give the probability to 2 decimal places that the ratio between the colours of beads after n iterations is greater than or equal to r in the shortest number of bytes.



An example set of iterations:



Let (x, y) define the urn such that it contains x red beads and y blue beads.



Iteration    Urn       Ratio
0 (1,1) 1
1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4
2 (5,1) 5 //Blue bead retrieved, coin flip tails
3 (3,1) 3 //Red bead retrieved, coin flip tails
4 (3,4) 1.333... //Blue bead retrieved, coin flip heads, die roll 3


As can be seen the Ratio r is always ≥ 1 (so it's the greater of red or blue divided by the lesser)



Test cases:



Let F(n, r) define application of the function for n iterations and a ratio of r



F(0,5) = 0.00
F(1,2) = 0.50
F(1,3) = 0.42
F(5,5) = 0.28
F(10,4) = 0.31
F(40,6.25) = 0.14


This is code golf, so the shortest solution in bytes wins.










share|improve this question









New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




Problem statement



Pólya is playing about with his urn again and he wants you to help him calculate some probabilities.



In this urn experiment Pólya has an urn which initially contains 1 red and 1 blue bead.



For every iteration, he reaches in and retrieves a bead, then inspects the colour and places the bead back in the urn.



He then flips a fair coin, if the coin lands heads he will insert a fair 6 sided die roll amount of the same coloured bead into the urn, if it lands tails he will remove half the number of the same colored bead from the urn (Using integer division - so if the number of beads of the selected colour is odd he will remove (c-1)/2 where c is the number of beads of that colour)



Given an integer n ≥ 0 and a decimal r > 0, give the probability to 2 decimal places that the ratio between the colours of beads after n iterations is greater than or equal to r in the shortest number of bytes.



An example set of iterations:



Let (x, y) define the urn such that it contains x red beads and y blue beads.



Iteration    Urn       Ratio
0 (1,1) 1
1 (5,1) 5 //Red bead retrieved, coin flip heads, die roll 4
2 (5,1) 5 //Blue bead retrieved, coin flip tails
3 (3,1) 3 //Red bead retrieved, coin flip tails
4 (3,4) 1.333... //Blue bead retrieved, coin flip heads, die roll 3


As can be seen the Ratio r is always ≥ 1 (so it's the greater of red or blue divided by the lesser)



Test cases:



Let F(n, r) define application of the function for n iterations and a ratio of r



F(0,5) = 0.00
F(1,2) = 0.50
F(1,3) = 0.42
F(5,5) = 0.28
F(10,4) = 0.31
F(40,6.25) = 0.14


This is code golf, so the shortest solution in bytes wins.







code-golf probability-theory






share|improve this question









New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday







Expired Data













New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Expired DataExpired Data

2115




2115




New contributor




Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Expired Data is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • $begingroup$
    I feel like there is a formula for this...
    $endgroup$
    – Embodiment of Ignorance
    yesterday










  • $begingroup$
    Something to do with beta binomials maybe, but it might be longer to write that out
    $endgroup$
    – Expired Data
    yesterday










  • $begingroup$
    depends on the language; R and Mathematica might be able to do it efficiently.
    $endgroup$
    – Giuseppe
    yesterday


















  • $begingroup$
    I feel like there is a formula for this...
    $endgroup$
    – Embodiment of Ignorance
    yesterday










  • $begingroup$
    Something to do with beta binomials maybe, but it might be longer to write that out
    $endgroup$
    – Expired Data
    yesterday










  • $begingroup$
    depends on the language; R and Mathematica might be able to do it efficiently.
    $endgroup$
    – Giuseppe
    yesterday
















$begingroup$
I feel like there is a formula for this...
$endgroup$
– Embodiment of Ignorance
yesterday




$begingroup$
I feel like there is a formula for this...
$endgroup$
– Embodiment of Ignorance
yesterday












$begingroup$
Something to do with beta binomials maybe, but it might be longer to write that out
$endgroup$
– Expired Data
yesterday




$begingroup$
Something to do with beta binomials maybe, but it might be longer to write that out
$endgroup$
– Expired Data
yesterday












$begingroup$
depends on the language; R and Mathematica might be able to do it efficiently.
$endgroup$
– Giuseppe
yesterday




$begingroup$
depends on the language; R and Mathematica might be able to do it efficiently.
$endgroup$
– Giuseppe
yesterday










1 Answer
1






active

oldest

votes


















6












$begingroup$

JavaScript (ES7),  145 ... 129 124  123 bytes



Takes input as (r)(n). This is a naive solution that actually performs the entire simulation.





r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B


Try it online!



Too slow for the last 2 test cases.



Commented



r =>                    // r = target ratio
g = ( // g is a recursive function taking:
n, // n = number of iterations
B = // B = number of blue beads, minus 1
s = 0, // s = number of times the target ratio was reached
R = 0, // R = number of red beads, minus 1
h = d => // h = recursive function taking d = 6-sided die value
++d < 7 ? // increment d; if d is less than or equal to 6:
h( // do a recursive call to h:
d, // using the new value of d
[0, d].map(b => // for b = 0 and b = d:
g( // do a first recursive call to g:
n, // leave n unchanged
B / -~!!b, // divide B by 2 if b is not equal to 0
R / -~!b // divide R by 2 if b is equal to 0
) & g( // do a second recursive call to g:
n, // leave n unchanged
B + b, // add b blue beads
R + d - b // add d - b red beads
) // end of recursive calls to g
) // end of map()
) // end of recursive call to h
: // else (d > 6):
s / 24 ** -~n // stop recursion and return s / (24 ** (n + 1))
) => // body of g:
n-- ? // decrement n; if n was not equal to 0:
h`` // invoke h with d = [''] (coerced to 0)
: // else:
s += // increment s if:
~B <= r * ~R | // either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
~R <= r * ~B // or (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r





share|improve this answer











$endgroup$













  • $begingroup$
    I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
    $endgroup$
    – Expired Data
    yesterday











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "200"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});






Expired Data is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f181551%2fp%25c3%25b3lya-urn-flip-and-roll%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









6












$begingroup$

JavaScript (ES7),  145 ... 129 124  123 bytes



Takes input as (r)(n). This is a naive solution that actually performs the entire simulation.





r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B


Try it online!



Too slow for the last 2 test cases.



Commented



r =>                    // r = target ratio
g = ( // g is a recursive function taking:
n, // n = number of iterations
B = // B = number of blue beads, minus 1
s = 0, // s = number of times the target ratio was reached
R = 0, // R = number of red beads, minus 1
h = d => // h = recursive function taking d = 6-sided die value
++d < 7 ? // increment d; if d is less than or equal to 6:
h( // do a recursive call to h:
d, // using the new value of d
[0, d].map(b => // for b = 0 and b = d:
g( // do a first recursive call to g:
n, // leave n unchanged
B / -~!!b, // divide B by 2 if b is not equal to 0
R / -~!b // divide R by 2 if b is equal to 0
) & g( // do a second recursive call to g:
n, // leave n unchanged
B + b, // add b blue beads
R + d - b // add d - b red beads
) // end of recursive calls to g
) // end of map()
) // end of recursive call to h
: // else (d > 6):
s / 24 ** -~n // stop recursion and return s / (24 ** (n + 1))
) => // body of g:
n-- ? // decrement n; if n was not equal to 0:
h`` // invoke h with d = [''] (coerced to 0)
: // else:
s += // increment s if:
~B <= r * ~R | // either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
~R <= r * ~B // or (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r





share|improve this answer











$endgroup$













  • $begingroup$
    I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
    $endgroup$
    – Expired Data
    yesterday
















6












$begingroup$

JavaScript (ES7),  145 ... 129 124  123 bytes



Takes input as (r)(n). This is a naive solution that actually performs the entire simulation.





r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B


Try it online!



Too slow for the last 2 test cases.



Commented



r =>                    // r = target ratio
g = ( // g is a recursive function taking:
n, // n = number of iterations
B = // B = number of blue beads, minus 1
s = 0, // s = number of times the target ratio was reached
R = 0, // R = number of red beads, minus 1
h = d => // h = recursive function taking d = 6-sided die value
++d < 7 ? // increment d; if d is less than or equal to 6:
h( // do a recursive call to h:
d, // using the new value of d
[0, d].map(b => // for b = 0 and b = d:
g( // do a first recursive call to g:
n, // leave n unchanged
B / -~!!b, // divide B by 2 if b is not equal to 0
R / -~!b // divide R by 2 if b is equal to 0
) & g( // do a second recursive call to g:
n, // leave n unchanged
B + b, // add b blue beads
R + d - b // add d - b red beads
) // end of recursive calls to g
) // end of map()
) // end of recursive call to h
: // else (d > 6):
s / 24 ** -~n // stop recursion and return s / (24 ** (n + 1))
) => // body of g:
n-- ? // decrement n; if n was not equal to 0:
h`` // invoke h with d = [''] (coerced to 0)
: // else:
s += // increment s if:
~B <= r * ~R | // either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
~R <= r * ~B // or (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r





share|improve this answer











$endgroup$













  • $begingroup$
    I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
    $endgroup$
    – Expired Data
    yesterday














6












6








6





$begingroup$

JavaScript (ES7),  145 ... 129 124  123 bytes



Takes input as (r)(n). This is a naive solution that actually performs the entire simulation.





r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B


Try it online!



Too slow for the last 2 test cases.



Commented



r =>                    // r = target ratio
g = ( // g is a recursive function taking:
n, // n = number of iterations
B = // B = number of blue beads, minus 1
s = 0, // s = number of times the target ratio was reached
R = 0, // R = number of red beads, minus 1
h = d => // h = recursive function taking d = 6-sided die value
++d < 7 ? // increment d; if d is less than or equal to 6:
h( // do a recursive call to h:
d, // using the new value of d
[0, d].map(b => // for b = 0 and b = d:
g( // do a first recursive call to g:
n, // leave n unchanged
B / -~!!b, // divide B by 2 if b is not equal to 0
R / -~!b // divide R by 2 if b is equal to 0
) & g( // do a second recursive call to g:
n, // leave n unchanged
B + b, // add b blue beads
R + d - b // add d - b red beads
) // end of recursive calls to g
) // end of map()
) // end of recursive call to h
: // else (d > 6):
s / 24 ** -~n // stop recursion and return s / (24 ** (n + 1))
) => // body of g:
n-- ? // decrement n; if n was not equal to 0:
h`` // invoke h with d = [''] (coerced to 0)
: // else:
s += // increment s if:
~B <= r * ~R | // either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
~R <= r * ~B // or (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r





share|improve this answer











$endgroup$



JavaScript (ES7),  145 ... 129 124  123 bytes



Takes input as (r)(n). This is a naive solution that actually performs the entire simulation.





r=>g=(n,B=s=0,R=0,h=d=>++d<7?h(d,[0,d].map(b=>g(n,B/-~!!b,R/-~!b)&g(n,B+b,R+d-b))):s/24**-~n)=>n--?h``:s+=~B<=r*~R|~R<=r*~B


Try it online!



Too slow for the last 2 test cases.



Commented



r =>                    // r = target ratio
g = ( // g is a recursive function taking:
n, // n = number of iterations
B = // B = number of blue beads, minus 1
s = 0, // s = number of times the target ratio was reached
R = 0, // R = number of red beads, minus 1
h = d => // h = recursive function taking d = 6-sided die value
++d < 7 ? // increment d; if d is less than or equal to 6:
h( // do a recursive call to h:
d, // using the new value of d
[0, d].map(b => // for b = 0 and b = d:
g( // do a first recursive call to g:
n, // leave n unchanged
B / -~!!b, // divide B by 2 if b is not equal to 0
R / -~!b // divide R by 2 if b is equal to 0
) & g( // do a second recursive call to g:
n, // leave n unchanged
B + b, // add b blue beads
R + d - b // add d - b red beads
) // end of recursive calls to g
) // end of map()
) // end of recursive call to h
: // else (d > 6):
s / 24 ** -~n // stop recursion and return s / (24 ** (n + 1))
) => // body of g:
n-- ? // decrement n; if n was not equal to 0:
h`` // invoke h with d = [''] (coerced to 0)
: // else:
s += // increment s if:
~B <= r * ~R | // either (-B-1) <= r*(-R-1), i.e. (B+1)/(R+1) >= r
~R <= r * ~B // or (-R-1) <= r*(-B-1), i.e. (R+1)/(B+1) >= r






share|improve this answer














share|improve this answer



share|improve this answer








edited 15 hours ago

























answered yesterday









ArnauldArnauld

78.8k795327




78.8k795327












  • $begingroup$
    I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
    $endgroup$
    – Expired Data
    yesterday


















  • $begingroup$
    I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
    $endgroup$
    – Expired Data
    yesterday
















$begingroup$
I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
$endgroup$
– Expired Data
yesterday




$begingroup$
I really like this answer, I found that in order to solve the later test cases I needed to add code to merge the same ratio probabilities. So I'm not surprised it's too slow
$endgroup$
– Expired Data
yesterday










Expired Data is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















Expired Data is a new contributor. Be nice, and check out our Code of Conduct.













Expired Data is a new contributor. Be nice, and check out our Code of Conduct.












Expired Data is a new contributor. Be nice, and check out our Code of Conduct.
















If this is an answer to a challenge…




  • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


  • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
    Explanations of your answer make it more interesting to read and are very much encouraged.


  • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.



More generally…




  • …Please make sure to answer the question and provide sufficient detail.


  • …Avoid asking for help, clarification or responding to other answers (use comments instead).





draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f181551%2fp%25c3%25b3lya-urn-flip-and-roll%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

"Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

Alcedinidae

RAC Tourist Trophy