Namespaces question

 
I have two files, say A.mqh and B.mqh
Both files have the same variables but in different namespaces:
// A.mqh
namespace A {
        input ulong InpMagic = 1;                     // Magic
}

// B.mqh
namespace B {
        input ulong InpMagic = 2;                     // Magic
}

In the mq5 file I do the following:

//main.mq5
#include "A.mqh"

int OnInit() {
   PrintFormat("Magic: %d", A::InpMagic);
   return(INIT_SUCCEEDED);
}

This works fine, in the EA settings window the input appears and in the logs we see "Magic: 1".
But as soon as I include a second file in this way without changing OnInit the output changes:

//main.mq5
#include "A.mqh"
#include "B.mqh"

int OnInit() {
   PrintFormat("Magic: %d", A::InpMagic);
   return(INIT_SUCCEEDED);
}

Output: "Magic: 2".
Why does this happen when I have specified namespace A::?

 

External also means global. Don't mix name spaces with inputs.