a:6:{i:0;s:13712:"				<div class="h1"><h1>Andaman Amazing Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanblueoceantravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanblueoceantravels.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Andaman Amazing Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair, Havelock</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanblueoceantravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Amazing Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="107891"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/484011/178788.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/484011/178788.jpg"  width="150" height="150"    alt="Andaman Amazing Tour" title="Andaman Amazing Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival - Portblair – Cellular Jail - Light & Sound Show
								</p>
								<p class="aj">Arrival to Portblair. Our representative will meet and assist you at the Veer Savarkar Airport. Board the waiting vehicles, drive to your hotel and check in. First half of the day is at leisure. Later in the afternoon visit Cellular Jailfollowed by Light and Sound Show. The Cellular Jail has a pride of place in India’s freedom struggle. Many a stalwart were imprisoned here. Declared a national memorial, this three storey prison constructed by Britishers in 1906, is a pilgrimage destination for freedom fighters. This colossal edifice has mutely witnessed the most treacherous of inhumane atrocities borne by the convicts, who were mostly freedom fighters. The day draws to a gentle close with the Sound and Light Show at the historic Cellular Jail which gives you a vivid experience of its strong association with the freedom fighters and their struggle for independence. Overnight stay at the Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Portblair - Ross island - Corbyn's Cove Beach - Port Blair
								</p>
								<p class="aj">Today after breakfast embark on an Island cruise. One of the most sought after activities. It leaves a lasting impression. Visit Ross Island. Once the administrative headquarters of the British and capital of these Islands, the island is now under the Indian Navy. It stands now as a ruin of the bygone days with the old structures almost in debris. There is a small museum named Smritika, it holds photographs and the other antiques of the Britishers relevant to these islands. The island is famous for friendly flocks of Deer and lush green walking trails. Afternoon after lunch trip to Corbyne's Beach. Corbyn's Cove is a serene and unspoiled soft sandy beach in Andaman near to Port Blair. This beach is set in picturesque backgrounds of lush green coconut palms and pleasant sea. There is a pristine tourism Complex, which offers all kinds of facilities for an enthusiastic traveler. This is an ideal spot for sun basking and sea bathing. The main attractions in this beach are the inviting water sports activities. This beach and the water closed to the beach are perfect location for surfing, scuba diving and boating. Many pill boxes and bunkers established by Japanese add the attraction of the beach. Overnight stay at Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Port Blair – Neil Island - Bharatpura Beach – Sitapur Beach
								</p>
								<p class="aj">Morning at after breakfast exiting expedition for Neil Islands. On arrival meeting and assistance at Neil Island jetty thereafter leave by surface to Resort. Afternoon trip to Bharatpura beach and natural bridge. As we approach near the beaches the beaches appears in the form of a long arc. On the left side of the jetty is Bharatpur Beach and on the right Laxmanpur Beach. Centre of the island is Neil Kendra, a gently curving bay of white sand straddles the jetty, scattered with picturesque wooden fishing boats. Half a kilometer from the jetty, Bharatpur is one of the best beaches known for swimming and coral-watching with a vast sandy stretch. This beach is ideally recommended for youngsters because of activity options. One can hire glass bottom boats for coral viewing from private operator. The sea around the jetty area full of corals with schools of fishing swimming around. The color and form of vegetation along the beach soothe the senses. The secluded beach of Lakshmanpur lies 2 kms north of the Neil Jetty. The beach is a broad spur of white shell sand with shallow water and offers a good snorkeling option. Sunbathing and swimming are other attractions. The second Lakshmanpur beach is a rocky beach lies about 2 kms from the jetty with lots of coral formation ornamental fish, sea urchins, sea anemones, sea cucumbers, star fish etc., which are best suited for people of scientific temperament. The rocky surface can get slippery and one needs to be on ones guard. The main attraction here are the natural rock formations. The Sitapur beach is exposed to the open sea and thus prone to higher tides. It is 5 kilometers to the south and at the tip of the island. This beach is best suited to watch the sunrise with an impressive backdrop of natural vegetation and limestone formations. The journey from the jetty to sitapur beach itself is refreshing with green fields and a variety of crops and forest trees. A natural rock formation in Lakshmanpur beach is locally known as the Howrah Bridge. You need to visit the place during low tide as the retreating sea leaves behind many a secret from its treasure trove. Evening return back to Resort. Over night stay at hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Neil Island - Havelock - Radhanagar Beach
								</p>
								<p class="aj">Today after breakfast you will transfer to Jetty. Head to Havelock Island on board Cruise connecting the two islands! Havelock, about 54 kilometers northeast of Portblair, the Island is a hidden jewel. Few Indians know of this stunning beach destination in their own backyard while heading for Phuket (in Thailand) across the waters of Andaman Sea. Havelock is a serene tropical island encompassing about 86 square kilometers. Its clear waters are rated among the best in the world for snorkeling and scuba diving. Close to 1000 different species of marine life inhabit the waters of the Andaman Islands. Scuba divers can see nudi branchs, sea slugs and snails, varieties of ghost pipe fish, jaw fish and a number of different crustaceans of all shapes and sizes. With its serene beaches, 40 meters visibility underwater, colorful coral reefs and ‘far from the maddening crowd’ appeal, Havelock Island has emerged as a dream destination among discerning travelers. Arrive at Havelock Jetty, you are met and assisted by our representative. Board the waiting vehicles and drive to the hotel. Check in at the hotel. Afternoon proceed for Radhanagar Beach (or Beach No. 7) is the jewel in the crown of Havelock Island. Located on the western side of the island, it stands away from the cluster. The glorious white sand beach shot to global fame when Time magazine (in 2004) rated it as the finest in Asia. With lush tropical forest rising on a hill to one side, the draw of this white sand beach has steadily grown in the legion of avid beach buffs. The popularity of this beach has triggered cruises from across the Andaman Sea. travelers cruise over a few days from Thailand to experience the magic of this beach in particular. A wide beach that runs over a few kilometers, Radhanagar is simply stunning. It lends itself to a variety of activities.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Havelock - Portblair
								</p>
								<p class="aj">Afternoon Board the vehicles and drive to Havelock Jetty. From here sail to Portblair on board Cruise. Upon Arrival check into the hotel. Overnight stay at the Hotel. Optional Elephanta Beach @ INR 850/- per pax Proceed for snorkeling at Elephant beach. Elephant Beach is a small pristine beach, rather remotely located, it can be reached by boat. The beach is also an extremely good place for snorkeling with an easily accessible house reef, which boasts of beautiful corals and other marine life. The beach has also emerged as Havelock’s favorite spot for scuba diving. It is tailor made to be a beginners dive site.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Departure - Portblair
								</p>
								<p class="aj">After breakfast at hotel, transfer to the Portblair airport. This marks the culmination of a memorable trip to one of India’s natural wonders – the Andaman Islands.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanblueoceantravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Amazing Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="107891"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Andaman Amazing Tour - 5 Nights / 6 Days Tour Packages";i:2;s:128:"book andaman amazing tour - 5 nights / 6 days tour packages, beach and islands tour packages, port blair, havelock tour packages";i:3;s:171:"Andaman Blue Ocean Travels offers Andaman Amazing Tour - 5 Nights / 6 Days tour package, budget Beach and Islands tour packages for Port Blair, Havelock at exciting price.";i:4;s:412:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "",
		      "name": "Andaman Amazing Tour",
		      "telephone": "+91-9933250564"
		    }
		    </script>
			";i:5;N;}