RSolve not reducing for a certain recurrence relation











up vote
1
down vote

favorite
1












I'm trying to use RSolve as follows to solve a recurrence relation:



RSolve[{a[0] == 1, a[2 n + 1] == a[2 n]*2, a[2 n] == a[2 n - 1] + 2}, a, n]


I think the meaning of the relation is clear: for odd terms in the sequence, multiply the previous term by two, and for even terms, add two to the previous term.



However, when evaluating this, Mathematica simply echos the input:



output of evaluation



rather than attempting to solve the recurrence.



I can't find anything in the RSolve documentation which talks about cases where RSolve will do nothing, without any error message.



Have I made a syntax error, or does this mean that Mathematica is not able to solve this type of recurrence relation? How can I change my input so that Mathematica does solve the recurrence, assuming it is possible?










share|improve this question









New contributor




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




















  • Try replacing the next-to-last term in RSolve (a) with a[n].
    – yosimitsu kodanuri
    5 hours ago










  • It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
    – konsolas
    5 hours ago










  • Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
    – bbgodfrey
    1 hour ago

















up vote
1
down vote

favorite
1












I'm trying to use RSolve as follows to solve a recurrence relation:



RSolve[{a[0] == 1, a[2 n + 1] == a[2 n]*2, a[2 n] == a[2 n - 1] + 2}, a, n]


I think the meaning of the relation is clear: for odd terms in the sequence, multiply the previous term by two, and for even terms, add two to the previous term.



However, when evaluating this, Mathematica simply echos the input:



output of evaluation



rather than attempting to solve the recurrence.



I can't find anything in the RSolve documentation which talks about cases where RSolve will do nothing, without any error message.



Have I made a syntax error, or does this mean that Mathematica is not able to solve this type of recurrence relation? How can I change my input so that Mathematica does solve the recurrence, assuming it is possible?










share|improve this question









New contributor




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




















  • Try replacing the next-to-last term in RSolve (a) with a[n].
    – yosimitsu kodanuri
    5 hours ago










  • It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
    – konsolas
    5 hours ago










  • Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
    – bbgodfrey
    1 hour ago















up vote
1
down vote

favorite
1









up vote
1
down vote

favorite
1






1





I'm trying to use RSolve as follows to solve a recurrence relation:



RSolve[{a[0] == 1, a[2 n + 1] == a[2 n]*2, a[2 n] == a[2 n - 1] + 2}, a, n]


I think the meaning of the relation is clear: for odd terms in the sequence, multiply the previous term by two, and for even terms, add two to the previous term.



However, when evaluating this, Mathematica simply echos the input:



output of evaluation



rather than attempting to solve the recurrence.



I can't find anything in the RSolve documentation which talks about cases where RSolve will do nothing, without any error message.



Have I made a syntax error, or does this mean that Mathematica is not able to solve this type of recurrence relation? How can I change my input so that Mathematica does solve the recurrence, assuming it is possible?










share|improve this question









New contributor




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











I'm trying to use RSolve as follows to solve a recurrence relation:



RSolve[{a[0] == 1, a[2 n + 1] == a[2 n]*2, a[2 n] == a[2 n - 1] + 2}, a, n]


I think the meaning of the relation is clear: for odd terms in the sequence, multiply the previous term by two, and for even terms, add two to the previous term.



However, when evaluating this, Mathematica simply echos the input:



output of evaluation



rather than attempting to solve the recurrence.



I can't find anything in the RSolve documentation which talks about cases where RSolve will do nothing, without any error message.



Have I made a syntax error, or does this mean that Mathematica is not able to solve this type of recurrence relation? How can I change my input so that Mathematica does solve the recurrence, assuming it is possible?







equation-solving symbolic syntax recursion difference-equations






share|improve this question









New contributor




konsolas 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




konsolas 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 1 hour ago









bbgodfrey

43.5k857107




43.5k857107






New contributor




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









asked 6 hours ago









konsolas

1063




1063




New contributor




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





New contributor





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






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












  • Try replacing the next-to-last term in RSolve (a) with a[n].
    – yosimitsu kodanuri
    5 hours ago










  • It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
    – konsolas
    5 hours ago










  • Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
    – bbgodfrey
    1 hour ago




















  • Try replacing the next-to-last term in RSolve (a) with a[n].
    – yosimitsu kodanuri
    5 hours ago










  • It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
    – konsolas
    5 hours ago










  • Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
    – bbgodfrey
    1 hour ago


















Try replacing the next-to-last term in RSolve (a) with a[n].
– yosimitsu kodanuri
5 hours ago




Try replacing the next-to-last term in RSolve (a) with a[n].
– yosimitsu kodanuri
5 hours ago












It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
– konsolas
5 hours ago




It still simply echoes the input: RSolve[{a[0] == 1, a[1 + 2 n] == 2 a[2 n], a[2 n] == 2 + a[-1 + 2 n]}, a[n], n]
– konsolas
5 hours ago












Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
– bbgodfrey
1 hour ago






Welcome to Mathematica.SE! Interesting question(+1). I hope you will become a regular contributor. To get started, 1) take the introductory tour now, 2) when you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge, 3) remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign, and 4) give help too, by answering questions in your areas of expertise.
– bbgodfrey
1 hour ago












2 Answers
2






active

oldest

votes

















up vote
3
down vote













When Mathematica returns the input without any error message, it is unable to evaluate the input.



With this particular recursion there is another approach. The recursion can be defined by



Clear[a, ar]

ar[0] = 1; ar[n_?OddQ] := ar[n - 1]*2; ar[n_?EvenQ] := ar[n - 1] + 2;


Generating a sequence from this recursion



seq = ar /@ Range[10]

(* {2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


Use FindSequenceFunction to find the closed form of the recursion



a[n_] = FindSequenceFunction[seq, n] // FullSimplify

(* -3 + (-1)^n + 3 2^(-1 + n/2) (1 + Sqrt[2] + (-1)^(1 + n) (-1 + Sqrt[2])) *)


Checking equivalence outside of the range of seq



And @@ Table[a[n] == ar[n], {n, 0, 100}]

(* True *)





share|improve this answer





















  • Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
    – konsolas
    5 hours ago










  • Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
    – Bob Hanlon
    4 hours ago


















up vote
2
down vote













It appears that RSolve cannot solve difference equations in which two different equations describe the same variable. If so, a work-around is to describe even indices of the sequence as, for instance c[k], and odd indices as b[k], so that there is only one equation per variable.



FullSimplify[RSolveValue[{c[0] == 1, b[k] == c[k - 1]*2, c[k + 2] == b[k + 1] + 2}, 
{c[k], b[k]}, k] /. C[1] -> 0]
(* {-2 + 3 2^(-1 + k/2) (1 + (-1)^k), -4 - 3 2^(1/2 (-1 + k)) (-1 + (-1)^k)} *)


Then, construct the desired a[k] as even-index terms of c[k] and odd-index terms of b[k].



sol[k_] := If[EvenQ[k], 1/2 (-4 + 3 2^(k/2) + 3 (-1)^k 2^(k/2)),
-4 + 3 2^(1/2 (-1 + k)) - 3 (-1)^k 2^(1/2 (-1 + k))]
Table[sol[k], {k, 0, 10}]
(* {1, 2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


as desired.






share|improve this answer























    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.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "387"
    };
    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',
    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
    });


    }
    });






    konsolas 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%2fmathematica.stackexchange.com%2fquestions%2f186732%2frsolve-not-reducing-for-a-certain-recurrence-relation%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    3
    down vote













    When Mathematica returns the input without any error message, it is unable to evaluate the input.



    With this particular recursion there is another approach. The recursion can be defined by



    Clear[a, ar]

    ar[0] = 1; ar[n_?OddQ] := ar[n - 1]*2; ar[n_?EvenQ] := ar[n - 1] + 2;


    Generating a sequence from this recursion



    seq = ar /@ Range[10]

    (* {2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


    Use FindSequenceFunction to find the closed form of the recursion



    a[n_] = FindSequenceFunction[seq, n] // FullSimplify

    (* -3 + (-1)^n + 3 2^(-1 + n/2) (1 + Sqrt[2] + (-1)^(1 + n) (-1 + Sqrt[2])) *)


    Checking equivalence outside of the range of seq



    And @@ Table[a[n] == ar[n], {n, 0, 100}]

    (* True *)





    share|improve this answer





















    • Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
      – konsolas
      5 hours ago










    • Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
      – Bob Hanlon
      4 hours ago















    up vote
    3
    down vote













    When Mathematica returns the input without any error message, it is unable to evaluate the input.



    With this particular recursion there is another approach. The recursion can be defined by



    Clear[a, ar]

    ar[0] = 1; ar[n_?OddQ] := ar[n - 1]*2; ar[n_?EvenQ] := ar[n - 1] + 2;


    Generating a sequence from this recursion



    seq = ar /@ Range[10]

    (* {2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


    Use FindSequenceFunction to find the closed form of the recursion



    a[n_] = FindSequenceFunction[seq, n] // FullSimplify

    (* -3 + (-1)^n + 3 2^(-1 + n/2) (1 + Sqrt[2] + (-1)^(1 + n) (-1 + Sqrt[2])) *)


    Checking equivalence outside of the range of seq



    And @@ Table[a[n] == ar[n], {n, 0, 100}]

    (* True *)





    share|improve this answer





















    • Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
      – konsolas
      5 hours ago










    • Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
      – Bob Hanlon
      4 hours ago













    up vote
    3
    down vote










    up vote
    3
    down vote









    When Mathematica returns the input without any error message, it is unable to evaluate the input.



    With this particular recursion there is another approach. The recursion can be defined by



    Clear[a, ar]

    ar[0] = 1; ar[n_?OddQ] := ar[n - 1]*2; ar[n_?EvenQ] := ar[n - 1] + 2;


    Generating a sequence from this recursion



    seq = ar /@ Range[10]

    (* {2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


    Use FindSequenceFunction to find the closed form of the recursion



    a[n_] = FindSequenceFunction[seq, n] // FullSimplify

    (* -3 + (-1)^n + 3 2^(-1 + n/2) (1 + Sqrt[2] + (-1)^(1 + n) (-1 + Sqrt[2])) *)


    Checking equivalence outside of the range of seq



    And @@ Table[a[n] == ar[n], {n, 0, 100}]

    (* True *)





    share|improve this answer












    When Mathematica returns the input without any error message, it is unable to evaluate the input.



    With this particular recursion there is another approach. The recursion can be defined by



    Clear[a, ar]

    ar[0] = 1; ar[n_?OddQ] := ar[n - 1]*2; ar[n_?EvenQ] := ar[n - 1] + 2;


    Generating a sequence from this recursion



    seq = ar /@ Range[10]

    (* {2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


    Use FindSequenceFunction to find the closed form of the recursion



    a[n_] = FindSequenceFunction[seq, n] // FullSimplify

    (* -3 + (-1)^n + 3 2^(-1 + n/2) (1 + Sqrt[2] + (-1)^(1 + n) (-1 + Sqrt[2])) *)


    Checking equivalence outside of the range of seq



    And @@ Table[a[n] == ar[n], {n, 0, 100}]

    (* True *)






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 5 hours ago









    Bob Hanlon

    57.7k23591




    57.7k23591












    • Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
      – konsolas
      5 hours ago










    • Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
      – Bob Hanlon
      4 hours ago


















    • Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
      – konsolas
      5 hours ago










    • Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
      – Bob Hanlon
      4 hours ago
















    Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
    – konsolas
    5 hours ago




    Hi, thanks for the alternative solution. Do you know why Mathematica was unable to evaluate the input given?
    – konsolas
    5 hours ago












    Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
    – Bob Hanlon
    4 hours ago




    Don’t know. Presumably the algorithms used are not sufficiently robust to cover this case.
    – Bob Hanlon
    4 hours ago










    up vote
    2
    down vote













    It appears that RSolve cannot solve difference equations in which two different equations describe the same variable. If so, a work-around is to describe even indices of the sequence as, for instance c[k], and odd indices as b[k], so that there is only one equation per variable.



    FullSimplify[RSolveValue[{c[0] == 1, b[k] == c[k - 1]*2, c[k + 2] == b[k + 1] + 2}, 
    {c[k], b[k]}, k] /. C[1] -> 0]
    (* {-2 + 3 2^(-1 + k/2) (1 + (-1)^k), -4 - 3 2^(1/2 (-1 + k)) (-1 + (-1)^k)} *)


    Then, construct the desired a[k] as even-index terms of c[k] and odd-index terms of b[k].



    sol[k_] := If[EvenQ[k], 1/2 (-4 + 3 2^(k/2) + 3 (-1)^k 2^(k/2)),
    -4 + 3 2^(1/2 (-1 + k)) - 3 (-1)^k 2^(1/2 (-1 + k))]
    Table[sol[k], {k, 0, 10}]
    (* {1, 2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


    as desired.






    share|improve this answer



























      up vote
      2
      down vote













      It appears that RSolve cannot solve difference equations in which two different equations describe the same variable. If so, a work-around is to describe even indices of the sequence as, for instance c[k], and odd indices as b[k], so that there is only one equation per variable.



      FullSimplify[RSolveValue[{c[0] == 1, b[k] == c[k - 1]*2, c[k + 2] == b[k + 1] + 2}, 
      {c[k], b[k]}, k] /. C[1] -> 0]
      (* {-2 + 3 2^(-1 + k/2) (1 + (-1)^k), -4 - 3 2^(1/2 (-1 + k)) (-1 + (-1)^k)} *)


      Then, construct the desired a[k] as even-index terms of c[k] and odd-index terms of b[k].



      sol[k_] := If[EvenQ[k], 1/2 (-4 + 3 2^(k/2) + 3 (-1)^k 2^(k/2)),
      -4 + 3 2^(1/2 (-1 + k)) - 3 (-1)^k 2^(1/2 (-1 + k))]
      Table[sol[k], {k, 0, 10}]
      (* {1, 2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


      as desired.






      share|improve this answer

























        up vote
        2
        down vote










        up vote
        2
        down vote









        It appears that RSolve cannot solve difference equations in which two different equations describe the same variable. If so, a work-around is to describe even indices of the sequence as, for instance c[k], and odd indices as b[k], so that there is only one equation per variable.



        FullSimplify[RSolveValue[{c[0] == 1, b[k] == c[k - 1]*2, c[k + 2] == b[k + 1] + 2}, 
        {c[k], b[k]}, k] /. C[1] -> 0]
        (* {-2 + 3 2^(-1 + k/2) (1 + (-1)^k), -4 - 3 2^(1/2 (-1 + k)) (-1 + (-1)^k)} *)


        Then, construct the desired a[k] as even-index terms of c[k] and odd-index terms of b[k].



        sol[k_] := If[EvenQ[k], 1/2 (-4 + 3 2^(k/2) + 3 (-1)^k 2^(k/2)),
        -4 + 3 2^(1/2 (-1 + k)) - 3 (-1)^k 2^(1/2 (-1 + k))]
        Table[sol[k], {k, 0, 10}]
        (* {1, 2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


        as desired.






        share|improve this answer














        It appears that RSolve cannot solve difference equations in which two different equations describe the same variable. If so, a work-around is to describe even indices of the sequence as, for instance c[k], and odd indices as b[k], so that there is only one equation per variable.



        FullSimplify[RSolveValue[{c[0] == 1, b[k] == c[k - 1]*2, c[k + 2] == b[k + 1] + 2}, 
        {c[k], b[k]}, k] /. C[1] -> 0]
        (* {-2 + 3 2^(-1 + k/2) (1 + (-1)^k), -4 - 3 2^(1/2 (-1 + k)) (-1 + (-1)^k)} *)


        Then, construct the desired a[k] as even-index terms of c[k] and odd-index terms of b[k].



        sol[k_] := If[EvenQ[k], 1/2 (-4 + 3 2^(k/2) + 3 (-1)^k 2^(k/2)),
        -4 + 3 2^(1/2 (-1 + k)) - 3 (-1)^k 2^(1/2 (-1 + k))]
        Table[sol[k], {k, 0, 10}]
        (* {1, 2, 4, 8, 10, 20, 22, 44, 46, 92, 94} *)


        as desired.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 1 hour ago

























        answered 2 hours ago









        bbgodfrey

        43.5k857107




        43.5k857107






















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










             

            draft saved


            draft discarded


















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













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












            konsolas 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%2fmathematica.stackexchange.com%2fquestions%2f186732%2frsolve-not-reducing-for-a-certain-recurrence-relation%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

            Catalogne

            Violoncelliste

            Héron pourpré